2015-02-01 3 views
2

Когда мой GM скрипт делает это:GM_openInTab (или любая другая функция GM_) не определен?

var curTab = GM_openInTab(url); 

это приводит к 'GM_openInTab is not defined' ошибки JavaScript в браузере консоли.

Я также пробовал использовать var curWin = window.open(url); вместо GM_openInTab, но это не повлияло.

Что я пытаюсь сделать с этим GM-скриптом: для данного сайта (доменного имени) перейдите по списку (массиву) URL-адресов в этом домене и найдите интересующие предметы.

Что не так с моим кодом или подходом?

Я использую Greasemonkey 2.3 с Firefox 33.1.1 и Windows XP 32-bit.

+2

У вас '@grant GM_openInTab'? – tsh

+0

СПАСИБО ВАС! –

ответ

4

Для того, чтобы использовать любой из GM_ функций, вы должны установить соответствие @grant directiveDoc (по состоянию на Greasemonkey version 2.0Release notes)

Например:

// ==UserScript== 
// @name  _YOUR_SCRIPT_NAME 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @grant GM_openInTab 
// ==/UserScript== 

var curTab = GM_openInTab ("http://pwnthemall.com/"); 

Заметим, что это имеет побочный эффект переключить песочницу Greasemonkey обратно. Смотрите также:



Tampermonkey эмулирует большую часть этого поведения от version 3.9Release notes. Но текущая версия (3.9.202) по-прежнему пытается угадать соответствующие значения, если @grant не указан, поэтому вы не обязательно увидите ошибку (пока).
Всегда используйте @grant в любом случае, для максимальной совместимости и будущего кода.

+1

Спасибо, это ответили на мой вопрос, почему что-то работало для меня в TamperMonkey, но не в Greasemonkey – Andrejs

Смежные вопросы