2

I am writing a small userscript to get some content from a server and add it to a tie.
The site has jQuery, how can I just use the site's jQuery instead of @require (because Chrome doesn't support this now)?

Brock Adams
  • 90,639
  • 22
  • 233
  • 295
Li Song
  • 659
  • 1
  • 6
  • 12
  • Can you use `unsafeWindow.jQuery`? Pitfalls [here](http://wiki.greasespot.net/UnsafeWindow). – Paul Grime Mar 26 '12 at 11:24
  • No. `unsafeWindow` is provided for Chrome *content scripts* but does not work the same way. It does not allow access to JS objects except for the standard DOM. – Brock Adams Mar 26 '12 at 11:27
  • See also: [Greasemonkey @require does not work in Chrome](http://stackoverflow.com/questions/9791489/greasemonkey-require-does-not-work-in-chrome) and [Injecting JavaScript in the page's scope using a Chrome extension](http://stackoverflow.com/a/9517879/938089). – Rob W Mar 26 '12 at 22:26

1 Answers1

4

Use an existing copy of jQuery with code like this:

function main () {
    /*--- Put all of your code here.
        Use jquery with $ or however the target page uses it.
    */
}

function addJS_Node (text, s_URL, funcToRun) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}

addJS_Node (null, null, main);
Brock Adams
  • 90,639
  • 22
  • 233
  • 295