10

我正在将Chrome浏览器扩展到Firefox,并使用附加SDK。要从面板或弹出窗口访问在后台文件中声明的函数,我可以在Chrome中使用chrome.extension.getBackgroundPage。在Firefox中是否有一些等价物,我可以访问在main.js或其他地方声明的数据/函数?在Firefox扩展中的文件之间共享数据

回答

1

显然,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。

+0

嗨,香草firefox的功能使这个功能成为可能。它是一个特定的功能还是扩展结构的差异?谢谢。 – usertest 2011-05-21 23:55:41

+0

在没有Jetpack的情况下构建插件时,您的插件没有后台前景。你可以从你的面板,按钮,工具栏,窗口等访问任何Javascript代码。当我说我的意思是甚至代码从其他插件,如Firebug ... – mhitza 2011-05-22 21:57:20

+0

我没有使用jetpack版本。你说没有喷气背包是可能的,怎么样?谢谢。 – usertest 2011-05-26 07:31:12