0

私はJSを学んでいますが、これを行うためにドキュメントをまとめる方法の問題に直面し続けています。たとえば、Greasemonkey は文書化されていますが、greasepot wiki をうまく使用するには、参照すらされていない他の多くのコンテキストを知っておく必要があります。

たとえば、次のさまざまな組み合わせを試してきましたが、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 responseHoldingObject = new Object(); ?) ? 等

そして、私が探しているページフェッチを取得するためのアドバイスをいただければ幸いです。目標は、コンテンツを取得し、最終的に別のページ内 (たとえば、textarea または div 内など) に追加することです。

4

1 に答える 1

0

GreaseMonkey で JS を学習するのは少し高度かもしれません。

fetchContentの戻り値が割り当てられます。console.logこれは、値を返さないundefinedためです。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で。

于 2016-05-12T01:46:58.173 に答える