我正在将扩展从 Chrome 移动到 Firefox,并且我正在使用附加 SDK。要从面板或弹出窗口访问后台文件中声明的函数,我可以chrome.extension.getBackgroundPage
在 Chrome 中使用。在 Firefox 中是否有一些等价物,我可以访问在其他任何地方声明的数据/函数main.js
或其他文件?
问问题
827 次
1 回答
1
显然 Jetpack 不支持这一点(尽管可以使用 vanilla 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>
如果假设该函数位于外部文件中,您只需像普通 JavaScript 一样包含它。
于 2011-05-21T18:58:25.130 回答