我正在使用Firefox的Addon SDK(v.1.11)开发插件。我的扩展程序在每个网站上动态创建一个iframe,然后加载一个html文件,其中包含来自add on的本地目录的其他资源,如图像,字体文件等。
问题
当加载任何此类本地资源(即:“ resource:// ”架构)时,iframe无法显示它们并抛出一条消息:
安全错误:http://www.XXX上的内容可能无法加载或链接到 资源:// XXX
这是一项安全措施introduced on Firefox 3。在没有Addon SDK的情况下开发时,围绕它的方式是声明一个带有“contentaccessible = yes”的目录,使任何人都可以访问目录的内容,包括我的添加。但是,我无法使用Addon SDK找到类似的功能。有没有更好的方法在我的插件创建并插入页面的iframe上使用本地数据?
答案 0 :(得分:0)
我认为您不能直接加载指向网址内资源的iFrame。浏览器抱怨是因为它破坏了相同的原始策略或跨站点脚本。我现在不记得是哪一个。
如果是要加载的html内容,则可以始终将其注入DOM,然后使用事件API向文档对象发送消息以显示自定义html。我过去做过这个并且它有效。
所以从main.js发送一条消息到内容脚本,然后将你的iframe html注入到DOM中,然后你可以向文档对象发送一条消息来显示它。
我希望这会有所帮助。
答案 1 :(得分:-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/