【发布时间】:2013-08-21 02:42:53
【问题描述】:
我正在使用附加 SDK 创建一个 firefox 扩展。由于各种原因(主要是 simple-prefs 模块中的功能不足),我不得不创建一个 XUL 窗口并使用 window/utils 包含它。此窗口显示正确,并且完全按照应有的方式工作。
我的问题是我需要从我的 XUL 窗口中包含的脚本文件中调用我的 main.js 中的一个函数。它们不存在于同一个命名空间中,所以我不确定如何访问我的函数。我很高兴使用消息传递,但我不认为 XPCOM 中包含的脚本可以使用 port 功能。
我想我需要设置某种回调,但我真的不知道该怎么做。根据the XUL Migration Guide
,我考虑创建自己的 XPCOM 组件,但似乎不允许使用附加 SDK 注册 XPCOM 组件作为参考,这是我的(缩写)文件夹结构:
- 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 中的偏好变化来解决这个问题,然后在我想要调用该函数时让它发生变化,但这让我觉得这是对偏好系统。如果有的话,我想以正确的方式来做。
【问题讨论】:
标签: javascript firefox firefox-addon xpcom