Firefox 安全经理否决Greasemonkey脚本中的操作!

Firefox 安全经理否决Greasemonkey脚本中的操作!,firefox,greasemonkey,Firefox,Greasemonkey,我试图阻止我的Greasemonkey脚本在iFrame中执行。我是通过使用if(window.top!=window.self)返回来实现的。只要我在元数据头之后插入这一行,错误控制台就会抛出一个“securitymanager否决的操作”,指示这一行代码。没有其他可用信息 我正在使用Firefox 3.6.10和最新的Greasemonkey扩展。哦,我不熟悉用户脚本,但即使在寻找答案一段时间后,我也没有找到任何答案。Greasemonkey有自己的API,允许持久存储和跨站点HTTP请求。

我试图阻止我的Greasemonkey脚本在iFrame中执行。我是通过使用
if(window.top!=window.self)返回来实现的。只要我在元数据头之后插入这一行,错误控制台就会抛出一个“securitymanager否决的操作”,指示这一行代码。没有其他可用信息


我正在使用Firefox 3.6.10和最新的Greasemonkey扩展。哦,我不熟悉用户脚本,但即使在寻找答案一段时间后,我也没有找到任何答案。

Greasemonkey有自己的API,允许持久存储和跨站点HTTP请求。因此,脚本在沙箱中执行,此API不能被滥用

要使代码正常工作,请使用:

if(usnafeWindow.top != unsafeWindow.self) return;
请注意
不安全部分,您可能需要查看以下页面:

或者,将代码包装在
标记中:

(function(f){var d=document,s=d.createElement('script');s.setAttribute('type','application/javascript');s.textContent = '('+f.toString()+')()';(d.body||d.head||d.documentElement).appendChild(s);s.parentNode.removeChild(s)})(function(){
   /* code here */
}

好吧,这解释了一些事情。一般来说,避免不安全的窗口似乎是个好主意,但在这种情况下,别无选择。现在很有魅力。谢谢。或者,您可以将脚本放在脚本标记中,并将其附加到文档中。这样,您就不再能够访问GM API,并且脚本的行为与页面上的任何脚本一样。见我答案中的例子。