GM_xmlhttprequest问题&教程在哪里?

时间:2016-05-12 00:54:33

标签: javascript jquery greasemonkey gm-xmlhttprequest

我正在学习JS&继续遇到如何将文档放在一起做这个或那个的问题。例如Greasemonkey已被记录,但您必须了解许多其他上下文,甚至没有提到使用greasepot wiki。

我一直在尝试以下各种组合,例如,我只能得到" undefined"但是来自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")); 

    */
  }
});
  } )

但我不确定我是否正确使用它:

需要在&#39; onload&#39;中定义一些东西? 需要先创建一个var吗? (例如var responseHoldingObject = new Object();?)? 等

任何有关寻找页面的建议我都很感激。目标是获取内容并最终将其附加到另一个页面中(例如在textarea或div中)。

1 个答案:

答案 0 :(得分: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的事情。