从xul窗口访问simple-prefs

时间:2012-12-26 19:15:59

标签: javascript firefox-addon xul firefox-addon-sdk

我想从XUL设置对话框中访问simple-prefs模块。我的代码如下所示。

var WINDOW = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher);
var mainWindow = MEDIATOR.getMostRecentWindow(null);

var pref = require("simple-prefs");
var win = WINDOW.openWindow(mainWindow, "chrome://myextension/content/settings.xul", "aboutMyExtension", "chrome,centerscreen,modal,dependant,dialog", pref);

如上所示,我将简单的prefs引用作为xul窗口的参数。 在xul页面中,我尝试以下方法来获取simple-prefs引用。

<script type="application/x-javascript" src="chrome://global/content/XPCNativeWrapper.js"/>
... 
XPCNativeWrapper.unwrap(window.arguments[0])

window.arguments[0][xpconnect wrapped nsISupports],但是unwrap()返回[xpconnect wrapped nsISupports]而不是实际展开它。

那么,如何从xul对话框中访问simple-prefs模块?

1 个答案:

答案 0 :(得分:0)

我建议在XUL窗口中使用脚本标记中的加载程序。

像这样:

<script type='application/javascript' src='resource://gre/modules/toolkit/loader.js'></script>

然后你可以在你的XUL窗口中require('simple-prefs')而不是试图传递它。

在sdk低级文档中查看有关加载程序的更多信息: https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/toolkit/loader.html