ReferenceError: GM_xmlhttpRequest is not defined
Asked Answered
O

3

17

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?

Overawe answered 24/5, 2013 at 13:37 Comment(4)
Can't duplicate. What are your specs? (OS, FF version, GM version, etc.) This is most likely due to an invalid metadata block.Mattison
Win7 SP1 x64, FF 21.0, GM 1.9. The metadata block is from this file, with only @grant modified.Overawe
Tested on same system (less SP1). No problem found. Does your metadata block have leading whitespace? Is the file encoded in anything but ANSI or UTF? Pastebin the exact script that duplicates the problem. Do step 4 from this answer.Mattison
A reinstall of the script fixed it.Overawe
O
4

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.

Overawe answered 27/5, 2013 at 14:43 Comment(0)
H
13

I had the same problem, and what fixed it for me was adding this at the top:

// @grant        GM_xmlhttpRequest
Hypoxanthine answered 21/12, 2017 at 2:21 Comment(0)
C
9

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

Chartulary answered 31/1, 2019 at 8:56 Comment(2)
Should have kept backwards compatibility. Absolutely moronic changes.Geber
GM object's methods are async (as opposed to functions containing "_"). They will not slow down the page. Sometimes there is no progress without breaking something else. Do your new scripts the new way, for old scripts GM offered fast-fix. Just add: // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js referenceMollie
O
4

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.

Overawe answered 27/5, 2013 at 14:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.