2012-12-04 73 views
2

我目前正在开发一个firefox扩展,它基本上在用户点击扩展图标时在当前页面中插入一个iframe。 我设法插入iframe代码,我想出了如何将src属性链接到我的html文件。在firefox扩展中的iframe中加载本地html文件

在Chrome浏览器版本,我只是做了

var main_html = chrome.extension.getURL('main.html'); 

而且我通过链接到的iframe这样的src属性:

iframe.setAttribute("src",main_html); 

所以main_html就像是资源的链接: //idofmyextension/content/data/main.html

但是,据我怀疑,我得到一个安全错误告诉我,位于当前网址的内容无法加载数据或建立到我的主链接.html文件。

有没有办法通过这个安全限制?或者另一种方法来加载我的HTML文件在我的iframe?

在此先感谢。

+0

查看答案那里,它是一个更新的线程关于相同的主题与更多的答案:http://stackoverflow.com/questions/21082162/firefox-addon-sdk-loading-addon-file-into-iframe –

回答

3

我假定使用Addon SDK,这与Google Chrome扩展开发更类似于Firefox中的常规XUL开发。然而,我在这里解释的方法也可以在没有附加SDK的情况下工作。

附加SDK目前不可行,但有一些工作要做,请参阅Bug 820213

我现在想到的唯一解决方法是使用data: url。因此,而不是:

const { data } = require("self"); 

let url = data.url("main.html"); 

// pass the url to the iframe 

您将有:

const { data } = require("self"); 

let content = encodeURIComponent(data.load("main.html")); 
let url = "data:text/html;charset=utf-8," + content; 

// pass the url to the iframe 

通知的data.load而不是data.url:你基本上加载资源的内容和使用,作为传输数据的URL。 这是丑陋的,但至少可以在某些情况下使用,直到适当的修复。

希望它能帮助!

+1

我猜我对此很陌生,但当您说“将网址传递给iframe”时,您的意思是什么?它不是'