我怎样才能访问Firefox的扩展资源 [英] How can I access firefox extension resources
问题描述
我正在为manifest扩展中的manifest.json寻找类似于
web_accessible_resources
的东西。 我正在用addon-sdk构建bootstraped(restarless)扩展。当我从内容脚本注入单个脚本到页面中时,它工作正常,但是当我想从页面访问资源时,它不会让我 - 错误消息是类似于
禁止访问受限制的URI。
。我也可以从网址栏访问它。我使用的格式如下:
var data = require(sdk / self)。
var url = data.url(some-resource.ext);
给出类似于 resource:// some_long_addon_id / addon_name / path_to_resource <
AFAIK是不允许的。 >你可以指定你试图读取的资源的类型吗?
如果是脚本 - 你可以将脚本内容加载到内容脚本中,然后使用脚本标记通过将其注入脚本的DOM中
$ p $内容脚本
var resourceData = self.data.load (名称);
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()将资源数据返回给页面脚本
How can I access firefox extension data from javascript code injected directly to the page?
I´m looking for something similar to web_accessible_resources
key in manifest.json for chrome extensions.
I´m building bootstraped (restarless) extension with addon-sdk. When I´m injecting individual scripts into the page from content script it works fine, but when I want to access the resource from page it won´t let me - error message is something like
Access to restricted URI denied.
. I can also access it from url bar. I´m using url format generated like this:
var data = require("sdk/self").data;
var url = data.url("some-resource.ext");
which gives something like resource://some_long_addon_id/addon_name/path_to_resource
AFAIK that is not allowed.
Can you specify the type of resource you are trying to read?
If it is a script - you can load the script content into content script, and then add it using script tag by injecting it into DOM of page Script
//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);
If it is text/xml/html/json - you can pass it using window.postMessage(). An example is shown here a link
You may also find it useful to write a method in Content script that listens for a message event in content script, and on receiving a message in content script from Page Script, you could post back to Page Script using window.postMessage() with the resource data
这篇关于我怎样才能访问Firefox的扩展资源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!