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

当我为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'); }); 

请参阅“错误:访问属性’处理程序’的权限被拒绝” 。

您不能再像这样调用目标页面的jQuery。

(注意,在@grant none模式下(默认为GM 2), unsafeWindowwindow相同……但是,你不能使用GM_函数。)


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

不要将unsafeWindow用于这样的事情(或者根本不用,如果你可以帮助它),并且Greasemonkey脚本几乎不需要$(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 ('

Hello World!

');

然后你可以混合使用GM_函数和你的jQuery实例。



注意:问题脚本// @include about:addons
根据设计,Greasemonkey脚本无法在about:addons页面上运行。