When I add the @grant for GM_xmlhttpRequest, I get:
Error: Permission denied to access property 'call'
in the jQuery file.
If I remove the grant, it works fine.
// ==UserScript==
// @name Dimi Test
// @namespace Dimi
// @include about:addons
// @version 1
// @grant GM_xmlhttpRequest
// @include http://*.myDomain.*/*
// ==/UserScript==
var $J = unsafeWindow.jQuery;
$J(unsafeWindow.document).ready(function(){
alert('Hello');
});
See "Error: Permission denied to access property 'handler'".
You can no longer invoke the target-page's jQuery like that.
(Note that in @grant none
mode (the default as of GM 2), unsafeWindow
is the same as window
... But, then you can't use GM_
functions.)
@require
your own copy of jQuery; it will not conflict with the page's and will load faster, to boot.
Do not use unsafeWindow
for things like this (or at all, if you can help it), and $(document).ready()
is also almost never needed for Greasemonkey scripts.
Your (new) sample script would merely be:
// ==UserScript==
// @name Dimi Test
// @namespace Dimi
// @version 1
// @grant GM_xmlhttpRequest
// @include about:addons
// @include http://*.myDomain.*/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// ==/UserScript==
$("body").prepend ('<h1>Hello World!</h1>');
And you can then mix GM_
functions and your instance of jQuery with no problems.
Note: The question script has // @include about:addons
.
Greasemonkey scripts will not work on the about:addons
page, by design.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With