2013-07-07 88 views
2

如何从JavaScript代码直接注入页面访问Firefox扩展数据? 我正在寻找类似于web_accessible_resources的关键在manifest.json铬扩展。 我正在用addon-sdk构建bootstraped(restarless)扩展。当我从内容脚本向页面注入单独的脚本时,它工作正常,但是当我想从页面访问资源时,它不会让我 - 错误消息类似于如何访问Firefox扩展资源

访问受限制的URI被拒绝。

。我也可以从url栏访问它。这样产生的I'm使用URL格式:

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

这给像resource://some_long_addon_id/addon_name/path_to_resource

回答

1

据我所知这是不允许的。

您可以指定您尝试阅读的资源类型吗?

如果它是一个脚本 - 你可以加载脚本内容为内容脚本,然后使用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); 

如果是文本/ XML/HTML添加它/ json - 你可以使用window.postMessage()传递它。 一个示例如下所示a link

您也可能会发现,写在内容脚本的方法监听内容脚本消息事件,并接收从页面脚本内容脚本的消息,你可以回发到页面脚本使用window.postMessage()与资源数据

+0

好的,谢谢。我试图获取模板文件,因为它在chtome中工作,我认为也会有类似的Firefox。 – hynner