我正在开发一个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文件的另一种方式?
提前致谢。
答案 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
:您基本上加载资源的内容并将其用作数据网址。
它很丑,但至少可以在某些情况下使用,直到适当的修复。
希望它有所帮助!