2016-05-12 4 views
0

私はJS &を学んでいます。これを行うためにドキュメントをまとめておく方法の問題が続いています。例えばGreasemonkeyは文書化されていますが、greasepot wikiをうまく使用するために参照されていない多くの他のコンテキストも知っていなければなりません。GM_xmlhttprequest問題とチュートリアルどこか?

しかし、私は例えば、以下の様々な組み合わせをしようとしてきた、と私は今までGM_xmhttprequest機能から「未定義」を得ることができます

var url = "https://en.wikipedia.org/wiki/CURL?action=render"; 

var fetchContent = console.log(function getContent(url) { 
    if (url.length < 0) { 
    return 0 ; 
    } 
GM_xmlhttpRequest({ 
    method: "GET", 
    url: url, 
    headers: { 
    "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. 
    //"Accept": "text/xml"   // If not specified, browser defaults will be used. 
    }, 
    onload: function(response) { 
    //var responseXML = null; 
    alert(response.responseText); 
    // Inject responseXML into existing Object (only appropriate for XML content). 

    /* 
    if (!response.responseXML) { 
     responseXML = new DOMParser() 
     .parseFromString(response.responseText, "text/xml"); 
    } 

    GM_log([ 
     response.status, 
     response.statusText, 
     response.readyState, 
     response.responseHeaders, 
     response.responseText, 
     response.finalUrl, 
     responseXML 
    ].join("\n")); 

    */ 
    } 
}); 
    }) 

しかし、私は私はわからないんだけど

'onload'で何かを定義する必要がありますか? 事前にvarを作成する必要がありますか? (例:var responseHoldingObject = new Object();?)? など

私が探しているページを取得するためのアドバイスはありがたいです。目標はコンテンツを取得し、最終的に別のページ(テキストエリアやdivなど)に追加することです。

答えて

0

GreaseMonkeyを使用してJSを学習することは少し進んでいるかもしれません。

fetchContent の戻り値がconsole.logに返されるため、戻り値はconsole.logに割り当てられます。あなたが記録しているのは、機能getContentです。 getContentは評価されません。

最後に、(ポーリングを除いて)確実に非同期関数からコールバックの外部で使用する応答を得ることはできません。基本的には、このようなもの(テストされていない):

GM_xmlhttpRequest({ 
    method: "GET", 
    url: url, 
    headers: { 
    "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. 
    //"Accept": "text/xml"   // If not specified, browser defaults will be used. 
    }, 
    onload: function(response) { 

    /* use response here */ 

    } 
}); 

/* can't use response here */ 

fetchContent = console.logのものはありません。

関連する問題