Как я могу использовать jQuery в Greasemonkey?
Я попытался поставить эту строку, но она не работает:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
jQuery вообще не работает в Greasemonkey. Есть ли другой способ использовать jQuery в Greasemonkey?
--
для всех людей, которые имеют ту же проблему, вы должны загрузить файл в greasespot, а затем установить его оттуда.
параметр создать новый скрипт не будет работать!
10 ответов:
возможно, у вас нет достаточно новой версии Greasemonkey. Это была версия 0.8, которая добавила
@require.// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.jsесли у вас нет 0.8, то используйте технику Джоан Пьедра описывает для вручную добавлять
scriptэлемент на странице.между версиями 0.8 и 0.9,
@requireи обрабатывается только при первой установке скрипта. если вы измените список необходимых скриптов, вам нужно удалить свой скрипт и переустановить это; Greasemonkey загружает необходимый скрипт один раз при установке и использует кэшированную копию после этого.по состоянию на 0.9, поведение Greasemonkey изменилось (по адресу также косвенно связанный с этим вопрос) так что теперь он загружает необходимые скрипты после каждого редактирования; переустановка скрипта больше не требуется.
Если вы хотите использовать jQuery на сайте, где он уже включен, это путь (вдохновленный Брунольмом):
var $ = unsafeWindow.jQuery;Я знаю, что это не было первоначальным намерением вопроса, но это все чаще становится обычным делом, и вы явно не исключали этот случай. ;)
нет абсолютно ничего плохого в том, чтобы включить весь jQuery в ваш скрипт Greasemonkey. Просто возьмите источник и поместите его в верхней части пользовательского скрипта. Не нужно делать тег скрипта, так как вы уже выполняете JavaScript!
пользователь загружает скрипт только один раз в любом случае, поэтому размер скрипта не является большой проблемой. Кроме того, если вы когда-либо хотите, чтобы ваш сценарий Greasemonkey работал в средах, отличных от GM (например, пользовательские сценарии GM-esque Opera или Greasekit on Safari), это поможет не использовать GM-уникальные конструкции, такие как @require.
решение Роба является правильным-используйте
@requireс библиотекой jQuery и обязательно переустановите скрипт, чтобы директива была обработана.Я думаю, что стоит добавить, что вы можете использовать jQuery обычно, как только вы включили его в свой скрипт, за исключением методов AJAX. По умолчанию jQuery ищет XMLHttpRequest, который не существует в контексте Greasemonkey. Я писал о решение где вы создаете обертку для GM_xmlhttpRequest (версия XHR Greasemonkey) и используйте jQuery
ajaxSetup()чтобы указать обернутую версию по умолчанию. Как только вы это сделаете, вы можете использовать$.getи$.postкак обычно.у вас также могут быть проблемы с jQuery
$.getJSONпотому что он загружает JSONP с помощью<script>теги. Это приводит к ошибкам, поскольку jQuery определяет функцию обратного вызова в области окна Greasemonkey, а загруженные скрипты ищут обратный вызов в области главного окна. Ваш лучший выбор это использовать$.getвместо этого и разобрать результат сJSON.parse().
обновление: как говорится в комментарии ниже, этот ответ устарел.
Как все остальные сказали, @require запускается только после установки скрипта. Однако вы также должны отметить, что в настоящее время jQuery 1.4.* не работает с greasemonkey. Вы можете посмотреть здесь для деталей: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
вам придется использовать jQuery 1.3.2 до тех пор, пока вещи изменение.
Если вы используете chrome, вы должны выбрать альтернативу, поскольку Chromium не поддерживает
@require.источник: проект Chromium-пользовательские скрипты
более подробная информация и альтернативы на как я могу использовать jQuery в скриптах Greasemonkey в Google Chrome?
вы можете создать новый скрипт, используя новый пользовательский скрипт в Greasemonkey, но вам нужно отредактировать конфигурацию.xml-файл внутри папки gm_scripts.
код config.xml файл должен иметь такой же синтаксис:
<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test"> <Include>http://*</Include> <Require filename="jquery.js"/> </Script>обратите внимание на
<Require>тег.в вашем скрипте вы можете использовать прямой синтаксис jQuery. Убедитесь, что у вас есть тег require в заголовке Greasemonkey. Вот пример Hello World:
// ==UserScript== // @name Test jQuery // @namespace http://www.example.com/jQueryPlay/ // @description Just a test // @include http://* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js // ==/UserScript== $(document).ready(function() { alert("Hello world!"); });помните, что после изменения config.xml вы должны перезагрузить свой браузер для Greasemonkey, чтобы перезагрузить настройки.
также обратите внимание, что вам нужно скопировать jquery.JS-файл в папку каталога скриптов, чтобы это работало. Я проверил это, и это работает только в том случае, если вы на самом деле скопировать файл вручную там.
счастливый jQuerying!
мета @require не работает, когда вы хотите отменить привязку событий на веб-странице с помощью jQuery, вы должны использовать библиотеку jQuery, включенную в веб-страницу, а затем получить ее в Greasemonkey с
var $ = unsafeWindow.jQuery;Как отменить привязку обработчиков событий jquery в greasemonkey?
вы можете узнать
Component unavailableЕсли вы импортируете скрипт jQuery напрямую.может быть, это то, о чем говорил @Conley...
можно использовать
@require http://userscripts.org/scripts/source/85365.user.jsкоторый является модифицированной версией для работы на Greasemonkey, а затем получить объект jQuery
var $ = unsafeWindow.jQuery; $("div").css("display", "none");
@requireи не обрабатывается только при первой установке скрипта! По моим наблюдениям это происходит на первом же исполнении! Так ты можете установите скрипт с помощью команды Greasemonkey для создания совершенно нового скрипта. Единственное, о чем вам нужно позаботиться, это то, что нет перезагрузки страницы, прежде чем вы добавите@requireчасть. (и сохраните новый скрипт...)
Comments