在firefox扩展中的注入iframe中加载本地html文件

时间:2012-12-04 16:01:13

标签: iframe firefox-addon content-script

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

在Chrome版本中,我只是做了一个

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

我将链接传递给iframe的src属性:

 iframe.setAttribute("src",main_html);

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

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

有没有办法通过此安全限制?或者在我的iframe中加载我的html文件的另一种方式?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我假设使用Addon SDK,这与谷歌Chrome扩展开发更相似,而不是Firefox中的常规XUL开发。但是,我在这里解释的方法也适用于没有附加SDK的方法。

目前无法在附加SDK中使用,但有一些工作正在解决,请参阅Bug 820213

目前我想到的唯一解决方法是使用data:网址。所以,而不是:

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:您基本上加载资源的内容并将其用作数据网址。 它很丑,但至少可以在某些情况下使用,直到适当的修复。

希望它有所帮助!