2

这是我的GM_xmlhttpRequest脚本:

// ==UserScript==
// @name        test
// @namespace   test
// @include     http://stackoverflow.com/*
// @version     1
// ==/UserScript==

GM_xmlhttpRequest({
  method: "GET",
  url: "http://example.com",
  onload: function(response) {
    alert(response.responseText);
  }
});

function begin(){
    alert("ready");
}

$(document).ready(function() {
    begin();
}); 

它只提醒 example.com 的内容,而不是“准备好”。

但是,当我执行以下操作时,没有任何反应 - 没有任何警报:

function begin(){
    GM_xmlhttpRequest({
      method: "GET",
      url: "http://example.com",
      onload: function(response) {
        alert(response.responseText);
      }
    });
    alert("ready");
}

$(document).ready(function() {
    begin();
}); 

我究竟做错了什么?

4

1 回答 1

3

我很确定第一个示例显示了 GM_xmlhttpRequest 返回的内容,而不是“准备就绪

jQuery/$ 不能在 Greasemonkey 中直接访问。它在页面内加载(在本例中由 stackoverflow.com 加载)。要访问页面的功能/属性,您可以使用 unsafeWindow-object( http://wiki.greasespot.net/UnsafeWindow ):

unsafeWindow.$(document).ready(function() {
    begin();
}); 

But I would suggest to call begin() directly, you don't need $.ready() here, because GM-scripts will always execute when the DOMContentLoaded-event fires, which is equal to $.ready()

于 2013-01-02T11:15:38.983 回答