15

我在以下用户脚本代码中得到一个 ReferenceError:

// ==UserScript==
// @name          ...
// @namespace     ...
// @description   ...
// @include       ...
// @grant         GM_xmlhttpRequest
// ==/UserScript==

console.log(GM_info);
try
{
    console.log(GM_xmlhttpRequest({ method: "GET", url: "http://google.ca/", synchronous: true }).readyState);
}
catch (e)
{
    console.log(e);
}
...

它首先GM_info成功记录,然后记录 ReferenceError。(我正在使用 Firefox/Firebug。)

ReferenceError: GM_xmlhttpRequest 未定义

为什么我会收到此错误?

4

3 回答 3

10

我遇到了同样的问题,为我解决的问题是在顶部添加这个:

// @grant        GM_xmlhttpRequest
于 2017-12-21T02:21:10.840 回答
6

由于新闻版本(GM 4.0)在您使用时发生此错误,GM_xmlhttpRequest因为GM_xmlhttpRequest被替换为:GM.xmlHttpRequest

新代码是:

// ==UserScript==
// @name          ...
// @namespace     ...
// @description   ...
// @include       ...
// @grant         GM.xmlHttpRequest
// ==/UserScript==

console.log(GM_info);
try
{
    console.log(GM.xmlHttpRequest({ method: "GET", url: "http://google.ca/", synchronous: true }).readyState);
}
catch (e)
{
    console.log(e);
}
//...

Greasemonkey:新更新中的“GM_xmlhttpRequest 未定义”

于 2019-01-31T08:56:35.760 回答
4

重新安装脚本解决了这个问题。我不需要重新启动 Firefox,但它可能对其他人有帮助。Brock 的回答为此类问题提供了有用的调试技巧。

于 2013-05-27T14:43:43.380 回答