0

我正在学习 JS 并不断遇到如何将文档放在一起来做这个或那个的问题。例如,Greasemonkey 已记录在案,但您必须了解很多甚至没有提到的其他上下文才能很好地使用油脂 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 吗?(例如 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 回答