Greasemonkey @require jQuery не работает "Компонент недоступен"
Я видел другой вопрос здесь о загрузке jQuery в Greasemonkey. Попробовав этот метод, с этим требованием в моих тегах ==UserScript==
:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
В Firefox по-прежнему появляется следующее сообщение об ошибке:
Error: Component is not available
Source File: file:///Users/greg/Library/Application%20Support/
Firefox/Profiles/xo9xhovo.default/gm_scripts/myscript/jquerymin.js
Line: 36
Это останавливает выполнение моего кода greasemonkey. Я убедился, что я включил @require
для jQuery и сохранил файл js перед его установкой, поскольку необходимые файлы загружаются только при установке.
код:
// ==UserScript==
// @name My Script
// @namespace http://www.google.com
// @description My test script
// @include http://www.google.com
// @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// ==/UserScript==
GM_log("Hello");
У меня есть Greasemonkey 0.8.20091209.4, установленный на Firefox 3.5.7 на моем Macbook Pro, Leopard (10.5.8). Я очистил свой кеш (кроме файлов cookie) и отключил все другие плагины, кроме Flashblock 1.5.11.2, Web Developer 1.1.8 и Adblock Plus 1.1.3.
Мой config.xml
с моей установкой Greasemonkey script:
<UserScriptConfig>
<Script filename="myscript.user.js" name="My Script"
namespace="http://www.google.com" description="My test script" enabled="true"
basedir="myscript">
<Include>http://www.google.com</Include>
<Require filename="jquerymin.js"/>
</Script>
Я вижу jquerymin.js в директории gm_scripts/myscript/
.
Кроме того, распространена ли эта ошибка на консоли при установке Greasemonkey script?
Error: not well-formed
Source File: file:///Users/Greg/Documents/myscript.user.js
Line: 1, Column: 1
Source Code:
// ==UserScript==
Ответы
Ответ 1
Хорошо, поэтому я посмотрел на это немного глубже. Я использовал ваш script точно, но использовал нашу версию JQuery, сделав ее такой:
// ==UserScript==
// @name My Script
// @namespace http://www.google.com
// @description My test script
// @include http://www.google.se/*
// @include http://www.dn.se/*
// @require http://myserver/jquery-1.3.2.js
// ==/UserScript==
GM_log("Hello");
Это отлично работает для меня, я думаю, на JQuery на google api отсутствуют некоторые функции. Потому что этот код выше, работает просто отлично. Также обратите внимание на /*
в конце каждого URL-адреса, пожалуйста, укажите это.
Попробуйте использовать другой JQuery и измените URL-адреса, и это должно быть правильно.
Ответ 2
Я нашел неидеальный способ использовать его с jQuery 1.4.1 - кажется, это исправить. Это новый обход браузера, который, кажется, "сломает" его.
JQuery-1.4.1.min.js:
[old] 36: var o=r.createElement("div");n="on"+n;var m=n in o;
[new] 36: var o=r.createElement("div");n="on"+n;var m=true;
JQuery-1.4.1.js
[old] 934: var isSupported = (eventName in el);
[new] 934: var isSupported = true;
Ответ 3
Я спотыкался, пытаясь разобраться с этой проблемой с GM 0.8 и jquery 1.4.2 и нашел это: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
Мне кажется, что это окончательный ответ на вопрос и как его обойти. Обходной путь работал у меня.
Ответ 4
Хорошие новости и обновление всех сообщений:
Вышеприведенный патч разрешил запускать версии 1.5.2 jQuery в сценариях Greasemonkey, но, к счастью, исправление больше не требуется, если вы используете текущую версию jQuery 1.5.2.
Я проверил его код и заметил, что код функции eventSupported в jQuery
var eventSupported = function(eventName) { ... }
был обновлен с последствием того, что unpatched jQuery 1.5.2 теперь работает в Greasemonkey 0.9.2.
Ответ 5
Патч для jquery-1.4.3.min.js
[старая] строка 41 u.createElement( "DIV" ); s = "on" + S; вар B = s в v;
[новая] строка 41 u.createElement( "DIV" ); s = "on" + S; вар В = истинно;
Ответ 6
Атрибут @require не работает корректно в Greasemonkey и jQuery... эта же ошибка может возникнуть и в FireBug.
Альтернативой является включение jQuery в страницу через Greasemonkey путем создания тега script. Вот как это сделать.
Ответ 7
Не совсем верно, похоже, что jQuery 1.4 пытается обнаружить что-то, используя вызов, который просто не работает в среде greasemonkey. @require обычно работает так, как должно.
Поэтому возвращение к 1.3.2 действительно делает трюк, но я бы скорее нашел решение, которое позволяет мне использовать 1.4.
btw, я использую это, немного другое:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js
Ответ 8
Здесь приведенная версия jQuery 1.4.4 для Greasemonkey:
http://userscripts.org/scripts/show/92329
Надеюсь, что это поможет,
й