我正在使用附加 SDK 创建一个 Firefox 扩展。由于各种原因(主要是 simple-prefs 模块中的功能不足),我不得不创建一个 XUL 窗口并使用 window/utils 将其包含在内。此窗口显示正确,并且完全按照应有的方式工作。
我的问题是我需要main.js
从我的 XUL 窗口中包含的脚本文件中调用我的函数。它们不存在于同一个命名空间中,所以我不确定如何访问我的函数。我很高兴使用消息传递,但我不认为port
XPCOM 中包含的脚本可以使用该功能。
我在想我需要设置某种回调,但我真的不知道该怎么做。我考虑创建自己的 XPCOM 组件,但根据XUL 迁移指南,似乎不允许我使用附加 SDK 注册 XPCOM 组件
作为参考,这是我的(缩写)文件夹结构:
- package.json
- chrome.manifest (to allow me to open a XUL window)
- lib
- main.js
- chrome
- content
- window.xul
- script.js
我希望 .in 中main.js
的某些代码可以调用某些代码script.js
。请注意,窗口是在 main.js 中创建的(就像这样)
var { open } = require('sdk/window/utils');
var window = open('chrome://my-app-id/content/window.xul', { features: {
chrome: true,
centerscreen: true,
toolbar: true
}});
这很有效。有没有人有任何想法?
编辑:我可以通过观察偏好变化来解决这个问题main.js
,然后在我想要调用函数时让它发生变化,但这让我觉得这是对偏好系统的巨大滥用。我想以正确的方式来做,如果有的话。