我正在将Chrome浏览器扩展到Firefox,并使用附加SDK。要从面板或弹出窗口访问在后台文件中声明的函数,我可以在Chrome中使用chrome.extension.getBackgroundPage
。在Firefox中是否有一些等价物,我可以访问在main.js
或其他地方声明的数据/函数?在Firefox扩展中的文件之间共享数据
10
A
回答
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。
相关问题
- 1. Firefox扩展:共享状态
- 2. 在JSP文件之间共享数据?
- 3. 在Javascript文件之间共享数据
- 4. Kotlin在Float和Double之间共享扩展函数的实现
- 5. Angular2在组件之间共享数据
- 6. 在Angularjs组件之间共享数据
- 7. 共享数据JVM之间
- 8. 共享分享类和数据库共享扩展
- 9. 如何在扩展和容器应用程序之间共享SQLite数据库
- 10. 如何在2个或更多Visual Studio扩展之间共享数据?
- 11. 共享UserDefaults扩展
- 12. 从共享扩展
- 13. Chrome扩展:在content.js和popup.js之间共享常量变量
- 14. 在es6模块之间共享数据
- 15. 在Android用户之间共享数据
- 16. C++ - 在线程之间共享数据
- 17. 在specflow场景之间共享数据
- 18. 在master和reduce之间共享数据
- 19. 在两个类之间共享数据
- 20. 如何在iPhone之间共享数据?
- 21. 在类对象之间共享数据
- 22. 在phonegap和inappbrowser之间共享数据
- 23. Silverlight - 在页面之间共享数据
- 24. 在XIB之间共享数据
- 25. ios在用户之间共享数据
- 26. 在appengine模块之间共享数据
- 27. 在UIWebView和UIViewController之间共享数据
- 28. 在窗体c之间共享数据#
- 29. 在视图之间共享数据
- 30. 在数据库之间共享LotusScript库
嗨,香草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