如何从直接注入(inject)页面的 javascript 代码访问 firefox 扩展数据?
我在 manifest.json 中寻找类似于 web_accessible_resources
键的东西,用于 chrome 扩展。
我使用 addon-sdk 构建自举(restarless)扩展。当我从内容脚本将单个脚本注入(inject)页面时它工作正常,但是当我想从页面访问资源时它不会让我 - 错误消息类似于
Access to restricted URI denied.
.我也可以从网址栏访问它。我使用这样生成的 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 这是不允许的。
您能否指定您尝试阅读的资源类型?
如果是脚本——可以将脚本内容加载到content script中,然后使用script标签将其注入(inject)到页面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() 传递它。 此处显示了一个示例 a link
您可能还会发现在内容脚本中编写一个方法来监听内容脚本中的消息事件很有用,并且在内容脚本中从页面脚本接收消息时,您可以使用 window.postMessage( ) 与资源数据
关于javascript - 如何访问 firefox 扩展资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515055/