ReferenceError: GM_xmlhttpRequest не определен

Я получаю 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 не определен

Почему я получаю эту ошибку?


person Kendall Frey    schedule 24.05.2013    source источник
comment
Не могу дублировать. Каковы ваши характеристики? (версия ОС, версия FF, версия GM и т. д.). Скорее всего, это связано с недопустимым блоком метаданных.   -  person Brock Adams    schedule 25.05.2013
comment
Win7 SP1 x64, ФФ 21.0, ГМ 1.9. Блок метаданных взят из этот файл, изменен только @grant.   -  person Kendall Frey    schedule 25.05.2013
comment
Проверено на той же системе (без SP1). Проблем не обнаружено. Есть ли в вашем блоке метаданных ведущие пробелы? Файл закодирован в чем-либо, кроме ANSI или UTF? Вставьте точный скрипт, который дублирует проблему. Выполните шаг 4 из этого ответа.   -  person Brock Adams    schedule 25.05.2013
comment
Исправлена ​​переустановка скрипта.   -  person Kendall Frey    schedule 27.05.2013


Ответы (3)


У меня была та же проблема, и что исправило это для меня, так это добавить это вверху:

// @grant        GM_xmlhttpRequest
person Community    schedule 21.12.2017

Начиная с версии новостей (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);
}
//...

https://stackoverflow.com/questions/49365651/greasemonkey-gm-xmlhttprequest-is-not-defined-with-the-new-update/54456646#54456646

person A-312    schedule 31.01.2019
comment
Должен был сохранить обратную совместимость. Совершенно дебильные изменения. - person neverMind9; 25.05.2019
comment
Методы объекта GM являются асинхронными (в отличие от функций, содержащих _). Они не будут тормозить страницу. Иногда нет прогресса, не сломав что-то еще. Делайте ваши новые скрипты по-новому, для старых скриптов GM предложил fast-fix. Просто добавьте: // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js ссылка - person papo; 06.12.2019

Переустановка скрипта решила проблему. Мне не нужно было перезапускать Firefox, но это может быть полезно для других людей. Ответ Брока содержит полезные советы по отладке подобных проблем.

person Kendall Frey    schedule 27.05.2013