添加@grant值会破坏我的Greasemonkey + jQuery脚本吗?

时间:2014-08-27 16:31:27

标签: javascript jquery greasemonkey

当我为GM_xmlhttpRequest添加@grant时,我得到:

  

错误:访问属性“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');
});

1 个答案:

答案 0 :(得分:5)

请参阅"Error: Permission denied to access property 'handler'"

您无法再像这样调用目标页面的jQuery。

(请注意,在@grant none模式下(默认为GM 2),unsafeWindowwindow相同...但是,您无法使用{ {1}}函数。)


GM_你自己的jQuery副本;它不会与页面冲突,并且加载速度更快,无法启动。

不要将@require用于此类事情(或者根本不用,如果可以帮助的话),Greasemonkey脚本几乎不需要unsafeWindow

您的(新)示例脚本只是:

$(document).ready()

然后你可以将// ==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>'); 函数和你的jQuery实例混合起来没有任何问题。



注意:问题脚本有GM_ Greasemonkey scripts will not work on the about:addons page, by design.