2014-08-27 13 views
5

जब मैं GM_xmlhttpRequest के लिए @grant जोड़ने के लिए, मैं:@grant मूल्य जोड़ने से मेरी Greasemonkey + jQuery स्क्रिप्ट टूट जाती है?

Error: Permission denied to access property 'call'

jQuery फ़ाइल में।
यदि मैं अनुदान को हटा देता हूं, तो यह ठीक काम करता है।

// ==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

धन्यवाद ब्रॉक, मैंने सवाल को कम किया। – Dimi

उत्तर

4

"Error: Permission denied to access property 'handler'" देखें।

अब आप इस तरह के लक्ष्य-पृष्ठ की jQuery को नहीं बुला सकते हैं।

(कि @grant none मोड (जीएम 2) के रूप में डिफ़ॉल्ट में नोट, unsafeWindow, window रूप में ही है ... लेकिन तब आप GM_ कार्यों का उपयोग नहीं कर सकते।)


@require अपनी खुद की jQuery की प्रति; यह पेज के साथ संघर्ष नहीं करेगा और बूट करने के लिए तेज़ लोड करेगा।

इस तरह की चीजों के लिए unsafeWindow का उपयोग न करें (या बिल्कुल, अगर आप इसकी मदद कर सकते हैं), और $(document).ready() को Greasemonkey स्क्रिप्ट के लिए लगभग कभी भी आवश्यकता नहीं है।

आपका (नया) नमूना स्क्रिप्ट केवल होगा:

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

और तुम तो GM_ कार्य करता है और कोई समस्या नहीं के साथ jQuery के अपने उदाहरण के मिश्रण कर सकते हैं।



नोट: प्रश्न स्क्रिप्ट // @include about:addons है।
Greasemonkey scripts will not work on the about:addons page, by design.

+2

इसके लिए बहुत बहुत धन्यवाद! मैं इसे वहां से जाने में कामयाब रहा। बहुत सराहना की! – Dimi

संबंधित मुद्दे