Alex Rivera | Logout

How can I use jQuery in Greasemonkey scripts in Google Chrome?

Asked 2010-02-11T18:57:15.827
161

As some of you may know, Google Chrome has put some severe limitation on Greasemonkey scripts.

Chromium does not support @require, @resource, unsafeWindow, GM_registerMenuCommand, GM_setValue, or GM_getValue.

Without require, I can't find a way to include the jQuery library in Greasemonkey script under Google Chrome.

Does anybody have some advice in this matter?

Edit
Report

2 Answers

16

If the page already has jQuery, then just follow this template:

// ==UserScript==
// @name          My Script
// @namespace     my-script
// @description   Blah
// @version       1.0
// @include       http://site.com/*
// @author        Me
// ==/UserScript==

var main = function () {

    // use $ or jQuery here, however the page is using it

};

// Inject our main script
var script = document.createElement('script');
script.type = "text/javascript";
script.textContent = '(' + main.toString() + ')();';
document.body.appendChild(script);
answered 2012-01-17T06:05:25.407
2

I wonder if you couldn't rely on document.defaultView.jQuery in your GM script 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($);
}
answered 2010-07-22T10:04:55.090

Your Answer