问题
I get a ReferenceError in the following userscript code:
// ==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);
}
...
It first logs GM_info
successfully, then logs the ReferenceError. (I'm using Firefox/Firebug.)
ReferenceError: GM_xmlhttpRequest is not defined
Why do I get this error?
回答1:
I had the same problem, and what fixed it for me was adding this at the top:
// @grant GM_xmlhttpRequest
回答2:
Reinstalling the script fixed the problem. I didn't need to restart Firefox, but it may be helpful for other people. Brock's answer has helpful debugging tips for problems like this.
回答3:
Since the news version (GM 4.0) this error happened when you use GM_xmlhttpRequest
because GM_xmlhttpRequest
was replaced by : GM.xmlHttpRequest
.
The new code is :
// ==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 is not defined" with the new update
来源:https://stackoverflow.com/questions/16736320/referenceerror-gm-xmlhttprequest-is-not-defined