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

Dim*_*imi 5 javascript jquery greasemonkey

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

错误:拒绝访问属性"调用"的权限

在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');
});
Run Code Online (Sandbox Code Playgroud)

Bro*_*ams 5

请参阅"错误:访问属性'处理程序'的权限被拒绝".

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

(注意,在@grant none模式中(默认为GM 2),unsafeWindowwindow... 相同但是,则不能使用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>');
Run Code Online (Sandbox Code Playgroud)

然后你可以混合GM_函数和你的jQuery实例没有问题.



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

  • 非常感谢!我设法从那里开始.非常感激! (2认同)