【问题标题】:Adding a @grant value breaks my Greasemonkey+jQuery script?添加@grant 值会破坏我的 Greasemonkey+jQuery 脚本?
【发布时间】:2014-08-27 16:31:27
【问题描述】:

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

【问题讨论】:

  • 谢谢 Brock,我提炼了这个问题。

标签: javascript jquery greasemonkey


【解决方案1】:

见"Error: Permission denied to access property 'handler'"。

您不能再像那样调用目标页面的 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 ('<h1>Hello World!</h1>');

然后您可以毫无问题地混合GM_ 函数和您的jQuery 实例。



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

【讨论】:

  • 非常感谢!我设法让它从那里开始。非常感谢!
猜你喜欢
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多