Как я могу использовать jQuery в сценариях Механика в Google Chrome?

Как некоторые из Вас могут знать, Google Chrome поместил некоторое серьезное ограничение на сценарии Механика.

Хром не поддерживает @require, @resource, unsafeWindow, GM_registerMenuCommand, GM_setValue, или GM_getValue.

Без требуют, я не могу найти способ включать библиотеку jQuery в сценарий Механика под Google Chrome.

У кого-либо есть некоторый совет в этом вопросе?

154
задан Brock Adams 7 December 2011 в 19:18
поделиться

5 ответов

Из «Совет по пользовательскому сценарию: Использование jQuery - Блог Эрика Волда»

// ==UserScript==
// @name         jQuery For Chrome (A Cross Browser Example)
// @namespace    jQueryForChromeExample
// @include      *
// @author       Erik Vergobbi Vold & Tyler G. Hicks-Wright
// @description  This userscript is meant to be an example on how to use jQuery in a userscript on Google Chrome.
// ==/UserScript==

// a function that loads jQuery and calls a callback function when jQuery has finished loading
function addJQuery(callback) {
  var script = document.createElement("script");
  script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
  script.addEventListener('load', function() {
    var script = document.createElement("script");
    script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
    document.body.appendChild(script);
  }, false);
  document.body.appendChild(script);
}

// the guts of this userscript
function main() {
  // Note, jQ replaces $ to avoid conflicts.
  alert("There are " + jQ('a').length + " links on this page.");
}

// load jQuery and execute the main function
addJQuery(main);
190
ответ дан 23 November 2019 в 22:00
поделиться

Кроме того, вы можете упаковать свой скрипт с расширением jQuery для Chrome. См. Сценарии содержания Google Chrome .

Расширения Chrome, в отличие от скриптов Greasemonkey, могут автоматически обновляться.

4
ответ дан 23 November 2019 в 22:00
поделиться

Другой подход - изменить ваш скрипт для загрузки jQuery вручную. Пример из http://joanpiedra.com/jquery/greasemonkey/ :

// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

// All your GM code must be inside this function
function letsJQuery() {
    alert($); // check if the dollar (jquery) function works
}

РЕДАКТИРОВАТЬ: DRATS! После тестирования выяснилось, что этот код не работает, поскольку Google Chrome запускает пользовательские скрипты / расширения в отдельной области / процессе, отличной от реальной веб-страницы. Вы можете загрузить код jQuery с помощью XmlhttpRequest, а затем оценить его, но вы должны разместить код на сервере, который позволяет совместное использование ресурсов между источниками с помощью Access-Control-Allow-Origin: * заголовок. К сожалению НИ ОДИН из текущих CDN с jQuery не поддерживает это.

1
ответ дан 23 November 2019 в 22:00
поделиться

Интересно, нельзя ли полагаться на document.defaultView.jQuery в вашем СКРИПТЕ GM ala:

if (document.defaultView.jQuery) {
  jQueryLoaded(document.defaultView.jQuery);
} else {
  var jq = document.createElement('script');
  jq.src = 'http://jquery.com/src/jquery-latest.js';
  jq.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(jq);
  (function() { 
    if (document.defaultView.jQuery) jQueryLoaded(document.defaultView.jQuery);
    else setTimeout(arguments.callee, 100);
  })();
}

function jQueryLoaded($) {
  console.dir($);
}
2
ответ дан 23 November 2019 в 22:00
поделиться

Идеальное расширение для встраивания jQuery в Chrome Console так просто, как вы можете себе представить. Это расширение также делает вывод, если jQuery уже был встроен в страницу.

Это расширение используется для встраивания jQuery в любую страницу, которую вы хотите. Это позволяет использовать jQuery в оболочке консоли (Вы можете вызвать консоль Chrome с помощью "Ctrl+Shift+j").

Для встраивания jQuery в выбранную вкладку нажмите на кнопку расширения.

ССЫЛКА расширения: https://chrome.google.com/extensions/detail/gbmifchmngifmadobkcpijhhldeeelkc

-1
ответ дан 23 November 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: