Javascript 在Firefox扩展中的文件之间共享数据

Javascript 在Firefox扩展中的文件之间共享数据,javascript,firefox,google-chrome-extension,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Google Chrome Extension,Firefox Addon,Firefox Addon Sdk,我正在将一个扩展从Chrome迁移到Firefox,并使用附加SDK。要从面板或弹出窗口访问后台文件中声明的函数,我可以在chrome中使用chrome.extension.getBackgroundPage。Firefox中是否有一些等价物可以让我访问main.js中声明的数据/函数,或者其他任何地方的其他文件?显然Jetpack不支持这一点(尽管在普通Firefox加载项中可能) 但是有一章会对你有所帮助,只是这一章并不那么直截了当,因为它涉及通过事件传递消息 编辑: 让我们举一个例子。您可

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

显然Jetpack不支持这一点(尽管在普通Firefox加载项中可能)

但是有一章会对你有所帮助,只是这一章并不那么直截了当,因为它涉及通过事件传递消息

编辑:

让我们举一个例子。您可以将XUL+JavaScript视为HTML+JavaScript。与Jetpack将主插件代码与上下文代码(html、javascript、面板中的css、小部件等)分离(沙盒)的方式相反;它在单个“用户空间”中运行

在前面链接的页面的覆盖上进行调整,并添加一个与XPCOM一起工作的Javascript代码,您可以得到:

<?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>

函数getOS(){
返回Components.classes[“@mozilla.org/xre/app info;1”].getService(Components.interfaces.nsIXULRuntime).OS;
}

如果该函数位于外部文件中,您只需像普通JavaScript一样包含它。

Hi,vanilla firefox的哪项功能使该功能成为可能。它是一个特定的功能还是扩展结构上的差异?谢谢。在没有Jetpack的情况下构建插件时,插件没有背景前景。您可以从面板、按钮、工具栏、窗口等访问任何Javascript代码。当我说任何代码时,我的意思是,甚至是来自其他插件(如Firebug)的代码……我没有使用jetpack版本。你说没有喷气背包是可能的,怎么会呢?谢谢,谢谢你的例子。由于无法访问持续运行的后台页面,与外部javascript共享函数可能是唯一的选择。但这不允许像Chrome那样轻松地共享数据。希望听到更多关于在firefox XUL中共享数据的建议。