2014-08-27 13 views
5

Khi tôi thêm các @grant cho GM_xmlhttpRequest, tôi nhận được:Thêm giá trị @grant vi phạm tập lệnh Greasemonkey + jQuery của tôi?

Error: Permission denied to access property 'call'

trong file jQuery.
Nếu tôi xóa khoản trợ cấp, nó hoạt động tốt.

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

Cảm ơn Brock, tôi đã chưng cất câu hỏi. – Dimi

Trả lời

4

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

Bạn không còn có thể gọi jQuery của trang đích như thế nữa.

(Lưu ý rằng trong @grant none chế độ (mặc định là của GM 2), unsafeWindow cũng giống như window ... Nhưng, sau đó bạn không thể sử dụng chức năng GM_.)


@require của riêng bạn bản sao của jQuery; nó sẽ không xung đột với trang và sẽ tải nhanh hơn, để khởi động.

Không sử dụng unsafeWindow cho những thứ như thế này (hoặc tất cả, nếu bạn có thể trợ giúp) và $(document).ready() cũng gần như không bao giờ cần thiết cho tập lệnh Greasemonkey.

của bạn (mới) mẫu kịch bản đơn thuần sẽ là:

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

Và sau đó bạn có thể trộn GM_ chức năng và bạn thể hiện của jQuery với không có vấn đề.



Lưu ý: Các kịch bản câu hỏi có // @include about:addons.
Greasemonkey scripts will not work on the about:addons page, by design.

+2

Cảm ơn bạn rất nhiều vì điều này! Tôi đã xoay xở để có được nó từ đó. Nhiều đánh giá cao! – Dimi

Các vấn đề liên quan