Javascript 如何解决;访问属性的权限被拒绝';警报'&引用;?

Javascript 如何解决;访问属性的权限被拒绝';警报'&引用;?,javascript,firefox,greasemonkey,alert,permission-denied,Javascript,Firefox,Greasemonkey,Alert,Permission Denied,有一个网页,我正在制作一个greasmonkey脚本。此页面有几个iFrame。我发现他们是问题所在,但我不知道如何解决这个问题 首先,我的脚本用按钮创建了一个小div框。通过按下按钮,脚本将分析网页内容,并在特定条件下调用警报 Firefox中的Javascript控制台已经告诉我,document的访问被拒绝,因为我的脚本正在使用document.getElementByID查找顶部文档的正文,div框将附加到该正文中 这是一个很容易避免的问题,因为脚本会失败并卡在iFrame中,但它仍然会

有一个网页,我正在制作一个greasmonkey脚本。此页面有几个iFrame。我发现他们是问题所在,但我不知道如何解决这个问题

首先,我的脚本用按钮创建了一个小div框。通过按下按钮,脚本将分析网页内容,并在特定条件下调用
警报

Firefox中的Javascript控制台已经告诉我,
document
的访问被拒绝,因为我的脚本正在使用
document.getElementByID
查找顶部文档的正文,div框将附加到该正文中

这是一个很容易避免的问题,因为脚本会失败并卡在iFrame中,但它仍然会在主页上继续,因为它确实提供了对
文档的访问权限

当我尝试在函数中使用alert时,问题就出现了。似乎iframes接管了我的脚本,并在访问属性“alert”的权限被拒绝的情况下杀死了它。

我如何告诉浏览器/脚本或其他什么,我只希望我的脚本在主文档上运行,我不想被iFrame打扰?我没有安装脚本加载项,允许主域并阻止次域(加载在iFrame内),所有警报消息都正常。但是,我不能要求我的用户安装noscript启用/禁用特定域,我的脚本应该可以正常工作。我需要找到一个解决方案,它将与所有启用的iFrame一起工作

希望这听起来不令人困惑

谢谢您的帮助。

RE:

我如何告诉浏览器/脚本或其他什么,我只希望我的脚本在主文档上运行,我不想被iFrame打扰?我没有安装脚本加载项,允许主域并阻止次域(加载在iFrame内),所有警报消息都正常

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

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

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


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

谢谢,这足以添加两行代码,而且效果良好:)
if (window.top != window.self)  //-- Don't run on frames or iframes
    return;