Как я могу использовать jQuery в Greasemonkey?



Я попытался поставить эту строку, но она не работает:



// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js


jQuery вообще не работает в Greasemonkey. Есть ли другой способ использовать jQuery в Greasemonkey?



--



для всех людей, которые имеют ту же проблему, вы должны загрузить файл в greasespot, а затем установить его оттуда.



параметр создать новый скрипт не будет работать!

535   10  

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

    Ничего не найдено.