【问题标题】:Access simple-prefs from xul window从 xul 窗口访问 simple-prefs
【发布时间】:2012-12-26 19:15:58
【问题描述】:

我想从 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);

如上所示,我将简单的首选项引用作为 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 模块?

【问题讨论】:

  • 您没有在插件代码和窗口之间来回传递事件=传递通道,因此即使您最初将值传递到窗口(作为数组或散列),您也会对首选项更改做出反应仍然存在问题。不知道,真的。

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


【解决方案1】:

我建议在您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多