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

时间:2011-05-19 18:15:03

标签: javascript firefox google-chrome-extension firefox-addon firefox-addon-sdk

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

1 个答案:

答案 0 :(得分:1)

显然Jetpack不支持此功能(虽然可以使用vanilla Firefox附加组件)。

但是有一章可以帮助你,只是不那么直接,因为它涉及通过事件between add-on and the content scripts进行的消息传递。

编辑:

我们来自MDN about extensions的例子。您可以将XUL + JavaScript视为HTML + JavaScript。与Jetpack从你的上下文代码(html,javascript,css in panels,widgets等)中分离(沙盒)你的主要插件代码的方式相反;它运行在一个“用户空间”中。

调整之前链接的页面中的叠加层,并添加适用于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>

如果让我们说这个函数在外部文件中,你就像普通的JavaScript一样包含它。