如何解决“权限被拒绝访问属性'提醒'”?

问题描述:

有一个网页我正在制作一个greasmonkey脚本。该页面有几个iframe。我发现他们是问题,但我不知道如何解决这个问题。如何解决“权限被拒绝访问属性'提醒'”?

首先,我的脚本用按钮创建一个小的div框。通过按下脚本分析网页内容并在特定条件下致电alert。在Firefox

的Javascript控制台已经喊,我认为访问是因为我的剧本是用document.getElementByID找到顶部文档的尸体,其中DIV盒子被添加到拒绝document

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

当我尝试在我的函数中使用警报时,问题出现了。好像iframes接管我的脚本并用Permission denied to access property 'alert'杀死它。

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

希望它没有听起来令人困惑。

谢谢你的帮助。

+0

有些代码会有帮助 – user123444555621 2011-04-30 11:25:41

RE:

我如何告诉浏览器/脚本或什么的,我只希望我的脚本在主文档运行,我不想通过I帧来打扰我没有安装脚本插件? ,允许主域名并阻止二级域名(在内部框架中加载)并且所有警报消息都正常。

首先,调整您的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; 

将从I帧上停止运行的通用脚本。

+1

谢谢,足以添加2行代码,它都运行良好:) – user1651105 2011-05-02 09:20:10

+0

不客气,乐意效劳。 – 2011-05-02 09:21:47