添加@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), unsafeWindow
与window
相同……但是,你不能使用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
页面上运行。