2014-08-27 10 views
5

Quando aggiungo il @grant per GM_xmlhttpRequest, ottengo:L'aggiunta di un valore @grant interrompe il mio script Greasemonkey + jQuery?

Error: Permission denied to access property 'call'

nel file jQuery.
Se rimuovo la sovvenzione, funziona correttamente.

// ==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'); 
}); 
+0

Grazie Brock, ho distillato la domanda. – Dimi

risposta

4

Vedere "Error: Permission denied to access property 'handler'".

Non puoi più invocare il jQuery della pagina di destinazione in questo modo.

(Si noti che in modalità @grant none (il default di GM 2), unsafeWindow è lo stesso di window ... Ma, allora non è possibile utilizzare le funzioni di GM_.)


@require il proprio copia di jQuery; non entrerà in conflitto con la pagina e verrà caricato più velocemente, per l'avvio.

Non utilizzare unsafeWindow per cose come questa (o del tutto, se si può aiutare), e anche $(document).ready() non è quasi mai necessario per gli script di Greasemonkey.

Lo script (nuovo) del campione sarebbe semplicemente:

// ==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>'); 

e quindi è possibile mescolare GM_ funzioni e l'istanza di jQuery senza problemi.



Nota: Lo script domanda ha // @include about:addons.
Greasemonkey scripts will not work on the about:addons page, by design.

+2

Grazie mille per questo! Sono riuscito a farlo andare da lì. Molto apprezzato! – Dimi

Problemi correlati