在Firefox扩展中的文件之间共享数据
问题描述:
我正在将Chrome浏览器扩展到Firefox,并使用附加SDK。要从面板或弹出窗口访问在后台文件中声明的函数,我可以在Chrome中使用chrome.extension.getBackgroundPage
。在Firefox中是否有一些等价物,我可以访问在main.js
或其他地方声明的数据/函数?在Firefox扩展中的文件之间共享数据
答
显然,Jetpack不支持这个功能(尽管可以使用vanilla Firefox附加组件)。
但是有一章会帮助你,只是这不是那么直截了当,因为它涉及通过事件between add-on and the content scripts发送消息。
编辑:
让我们从MDN about extensions一个例子。您可以将XUL + JavaScript视为HTML + JavaScript。与Jetpack从你的上下文代码(html,javascript,css in panel,widgets等)中分离(沙箱)的主要插件代码相反,它运行在一个“用户空间”中。
适应于之前的链接页面覆盖,并添加JavaScript代码与XPCOM的作品,你会得到:
<?xml version="1.0"?>
<overlay id="sample"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="text/javascript">
function getOS() {
return Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
}
</script>
<statusbar id="status-bar">
<statusbarpanel id="my-panel" label="OS?" onclick="alert(getOS())" />
</statusbar>
</overlay>
如果让我们说的功能是在一个外部文件你只是包括它像普通的JavaScript。
嗨,香草firefox的功能使这个功能成为可能。它是一个特定的功能还是扩展结构的差异?谢谢。 – usertest 2011-05-21 23:55:41
在没有Jetpack的情况下构建插件时,您的插件没有后台前景。你可以从你的面板,按钮,工具栏,窗口等访问任何Javascript代码。当我说我的意思是甚至代码从其他插件,如Firebug ... – mhitza 2011-05-22 21:57:20
我没有使用jetpack版本。你说没有喷气背包是可能的,怎么样?谢谢。 – usertest 2011-05-26 07:31:12