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

use*_*est 10 javascript firefox firefox-addon google-chrome-extension firefox-addon-sdk

我正在将扩展程序从Chrome迁移到Firefox,而我正在使用Add-on SDK.要从我可以chrome.extension.getBackgroundPage在Chrome中使用的面板或弹出窗口访问后台文件中声明的功能.在Firefox中是否有一些等价物,我可以在main.js其他地方访问声明的数据/函数或其他文件?

mhi*_*tza 1

显然 Jetpack 不支持这一点(尽管可以使用普通的 Firefox 附加组件)。

但是有一章会对您有所帮助,只是不是那么简单,因为它涉及通过附加组件和内容脚本之间的事件进行消息传递。

编辑:

让我们举一个来自MDN 的关于扩展的例子。您可以将 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>
Run Code Online (Sandbox Code Playgroud)

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