Я полностью плохо знаком с GreaseMonkey, но я пытаюсь сделать немного сценария.
// ==UserScript==
// @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// ==/UserScript==
(function() {
$ = unsafeWindow.jQuery;
alert($); // this gives 'undefined'
}());
Почему предупреждение дает undefined
и как зафиксировать это?
ОБНОВЛЕНИЕ
Я попробовал это:
(function(){
//boilerplate greasemonkey to wait until jQuery is defined...
function GM_wait()
{
alert('ok');
if(typeof unsafeWindow.jQuery == 'undefined')
window.setTimeout(GM_wait,100);
else
unsafeWindow.jQuery(function() { letsJQuery(unsafeWindow.jQuery); });
}
GM_wait();
function letsJQuery($)
{
alert($);
}
})();
но это дало мне бесконечный цикл хорошо-предупреждений. Кажется, что jQuery не становится загруженным вообще.
Edit: Может ли это быть это?
Возможно, у вас нет достаточно последней версии Greasemonkey. Это была версия 0.8, которая добавила @require. Тоже помните, что @require обрабатывается только при первой установке скрипта. Если вы измените список необходимых скриптов, вам нужно удалить его и переустановить; Greasemonkey загружает необходимый сценарий один раз при установке и использует кэшированную копию после этого.
Скрипт GM может выполняться до того, как страница будет готова (т.е. до инициализации jQuery). Я использую этот код в своих скриптах Greasemonkey для использования jQuery:
(function(){
//boilerplate greasemonkey to wait until jQuery is defined...
function GM_wait()
{
if(typeof unsafeWindow.jQuery == 'undefined')
window.setTimeout(GM_wait,100);
else
unsafeWindow.jQuery(function() { letsJQuery(unsafeWindow.jQuery); });
}
GM_wait();
function letsJQuery($)
{
//whatever
}
})();
@require
предназначен для одноразовой загрузки ресурса.
При первой установке ресурс загружается и помещается в папку сценария.
Затем требуемый сценарий выполняется до пользовательского сценария.
Он выполняется в той же области, что и пользовательский сценарий, а не в unsafeWindow
.
Если вы пишете сценарий самостоятельно, он не получит ресурс до тех пор, пока вы его не установите (или не отредактируете XML-файлы GM, чтобы распознать ресурс и поместить файл в каталог сценария в каталоге firefox). каталог профиля пользователя).
Если вы выберете (более простой) метод удаления \ переустановки, не забудьте сделать резервную копию вашего пользовательского скрипта ... :)