如何解决“权限被拒绝访问财产'警报'”?

时间:2011-04-30 09:49:41

标签: javascript firefox greasemonkey alert permission-denied

有一个我正在制作greasmonkey脚本的网页。此页面包含多个iframe。我发现它们是问题,但我不知道如何解决这个问题。

首先,我的脚本会使用按钮创建一个小div框。通过按下按钮脚本分析网页内容并在某些条件下调用alert

Firefox中的Javascript控制台已经向我大声说“{1}}拒绝访问”,因为我的脚本正在使用document查找顶部文档的正文,其中div框被追加到其中。

这是一个容易避免的问题,因为脚本失败并陷入iframe,但它仍然在主页上继续,因为它确实可以访问document.getElementByID

当我尝试在我的函数中使用警报时问题出现了问题。似乎iframe会接管我的脚本并使用document将其杀死。

我如何告诉浏览器/脚本或其他什么,我只希望我的脚本在主文档上运行而我不想被iframe打扰?我安装了NO脚本插件,允许主域名和阻止次要域(在iframe中加载)和所有警报消息都正常。但是,我不能要求我的用户安装noscript启用/禁用特定域,我的脚本应该正常工作。我需要找到适用于所有iframe的解决方案。

希望这听起来并不令人困惑。

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

RE

  

我如何告诉浏览器/脚本或其他什么,我只希望我的脚本在主文档上运行而我不想被iframe打扰?我安装了NO脚本插件,允许主域名和阻止次要域(在iframe中加载)和所有警报消息都正常。

首先,调整include和exclude指令以尽可能忽略iframe。 EG:

// @include  http://example.com/normal/*
// @include  http://example.com/extra/*
// @exclude  http://example.com/extra/in_iframe/*


接下来,将这两行添加为Metadata Block之后的第一行代码:

if (window.top != window.self)  //-- Don't run on frames or iframes
    return;

这将阻止GM脚本在iframe上运行。