从 iframe 访问 Firefox 扩展程序

Posted

技术标签:

【中文标题】从 iframe 访问 Firefox 扩展程序【英文标题】:Firefox extension access from iframe 【发布时间】:2014-02-07 20:40:34 【问题描述】:

我的扩展中有一个 iframe,代码如下:

<html:iframe src="http://link.com/" id="iFrame" flex="1" type="content" />

在我的 main.js 中有一个变量:

var myVarExt='Good!';

但是当我尝试使用代码从 iframe 访问它时:

alert(parent.myVarExt);

在浏览器控制台中出现错误:

Error: Permission denied to access property 'myVarExt'

我该如何解决?

【问题讨论】:

【参考方案1】:

您不能这样做,因为它会破坏安全模型。在 IFrame 中加载的网页的权限低于扩展本身。请记住,您的扩展程序可以访问用户的文件系统并可以读取或删除文件,想象一下任意网页是否可以向您的扩展程序对象添加方法,然后调用它们。

内容码和扩展码的通信请参考Interaction between privileged and non-privileged pages。

您使用自定义 DOM 事件在网页和扩展程序之间发送数据。

【讨论】:

也许有办法将一些链接/域加入白名单?我了解如何使用事件侦听器完成整个事情,但只有在没有其他方法的情况下才想重写整个事情...... 没有办法为此目的将域添加到白名单。如果您打算通过不安全的http:// 链接加载这些域,这是一件好事!

以上是关于从 iframe 访问 Firefox 扩展程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从 chrome 扩展访问 iframe?

从 chrome 的扩展内容脚本访问 iframe 内容

授予 Chrome 扩展程序访问 iframe 内容的权限

禁用 Firefox 同源策略

调整 iframe 大小时,如何防止 swf 刷新?

在 IE 的嵌套 iframe 中访问 javascript 函数