我正在使用附加SDK创建一个Firefox扩展。由于各种原因(主要是simple-prefs模块中的特性很少),我不得不创建一个XUL窗口并使用window/utils将其包含在内。这个窗口显示正确,它的工作原理应该如何。Firefox XPCOM和附加SDK通信
我的问题是我需要从包含在我的XUL窗口中的脚本文件调用我的main.js
中的函数。它们不存在于同一个命名空间中,所以我不确定如何访问我的函数。我很高兴使用消息传递,但我不认为XPCOM中包含的脚本可以使用port
功能。
我在想我需要设置某种回调,但我真的不知道我该如何去做。我看着创造我自己的XPCOM组件,但似乎不允许我与加载项SDK注册XPCOM组件,根据the XUL Migration Guide
供参考,这是我的(略)的文件夹结构:
- package.json
- chrome.manifest (to allow me to open a XUL window)
- lib
- main.js
- chrome
- content
- window.xul
- script.js
我想要一些代码在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
喜好变动,然后使其改变时,我想调用的函数,但给我的印象偏好系统的一个巨大的滥用。我想以正确的方式做,如果有的话。