加载Firefox扩展内注入的iframe一个本地的HTML文件(Loading a local h

2019-08-03 12:23发布

我目前正在深化发展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

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

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

提前致谢。

Answer 1:

我假设的使用附加组件SDK ,更类似于谷歌浏览器扩展的开发,比在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。 这是丑陋的,但至少可以在某些情况下使用,直至适当的修正。

希望能帮助到你!



文章来源: Loading a local html file in an injected iframe within a firefox extension