4

我正在使用 Firefox 的 Addon SDK (v. 1.11) 开发一个插件。我的扩展在每个网站上动态创建一个 iframe,然后从插件的本地目录加载一个 html 文件,其中包括其他资源,例如图像、字体文件等。

问题

当加载任何此类本地资源(即:“ resource:// ”模式)时,iframe 无法显示它们并抛出一条消息:

安全错误:http://www.XXX 的内容可能无法加载或链接到资源://XXX

这是Firefox 3 引入的安全措施。在没有插件 SDK 的情况下进行开发时,解决方法是声明一个带有“contentaccessible=yes”的目录,使任何人都可以访问该目录的内容,包括我的插件。但是,我无法使用 Addon SDK 找到类似的功能。有没有更好的方法在我的插件创建并插入页面的 iframe 上使用本地数据?

4

2 回答 2

0

我认为您不能直接加载指向 URL 内资源的 iFrame。浏览器抱怨是因为它违反了同源策略或跨站点脚本策略。我现在不记得是哪一个了。

如果它是您要加载的 html 内容,您可以随时将其注入 DOM,然后使用事件 API 向文档对象发送消息以显示您的自定义 html。我过去做过这个,它有效。

所以从 main.js 向内容脚本发送一条消息,然后将您的 iframe html 注入 DOM,然后您可以向文档对象发送一条消息以显示它。

我希望这有帮助。

于 2015-02-14T07:53:38.220 回答
-1

不确定您发布问题时是否是这种情况,但似乎“resource://”不应再与 Addon SDK 一起使用。

如果您在扩展中使用 HTML 文件内的资源,则可以在本地引用它,否则您应该使用 data.url('whatever.jpg') 并根据需要传递该值。

完整信息在这里:http ://blog.mozilla.org/addons/2012/01/11/sdk-1-4-known-issue-with-hard-coding-resource-uris/

于 2013-05-31T02:24:43.137 回答