如何访问firefox扩展资源

How can I access firefox extension resources

本文关键字:firefox 扩展 资源 访问 何访问      更新时间:2023-09-26

如何从直接注入页面的javascript代码访问firefox扩展数据?我正在寻找类似manifest.json中web_accessible_resources键的chrome扩展。我正在用插件sdk构建引导(无重启)扩展。当我从内容脚本向页面注入单独的脚本时,它可以很好地工作,但当我想从页面访问资源时,它不允许我——错误消息类似于

拒绝访问受限制的URI。

我也可以从url栏访问它。我正在使用如下生成的url格式:

var data = require("sdk/self").data;
var url = data.url("some-resource.ext");

它给出了类似resource://some_long_addon_id/addon_name/path_to_resource 的东西

AFAIK,这是不允许的。

你能指定你要读取的资源类型吗?

如果是脚本,您可以将脚本内容加载到内容脚本中,然后通过将其注入页面script 的DOM来使用脚本标记添加它

 //content script
 var resourceData = self.data.load(NAME);
 var head = document.getElementsByTagName('head')[0];
 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.innerText = resurceData;
 head.appendChild(script);

如果它是text/xml/html/json,您可以使用window.postMessage()传递它。这里显示了一个链接的例子

您可能还发现在内容脚本中编写一个方法来侦听内容脚本中的消息事件很有用,并且在从页面脚本接收到内容脚本中消息时,您可以使用window.postMessage()将资源数据

发布回页面脚本