Javascript FirefoxSDK:侦听非插件特定的about:config条目中的更改
我试图监听firefox的about:config中的设置更改,用户可能在我的插件运行时更改了这些设置。有问题的设置是浏览器的一部分,不是由我的插件创建的 当用户使用“首选项/服务”模块使用我的加载项时,我可以手动读取和设置它们,但如果用户独立于我的加载项更改了about config中的设置,我希望能够在我的加载项中进行适当的更改 “simple prefs”模块提供了一个侦听器,但它仅适用于特定于应用程序的设置,如“extension.myaddon.mypreference”,其中我需要查看的设置类似于“network.someoptionhere”Javascript FirefoxSDK:侦听非插件特定的about:config条目中的更改,javascript,firefox,firefox-addon,listener,firefox-addon-sdk,Javascript,Firefox,Firefox Addon,Listener,Firefox Addon Sdk,我试图监听firefox的about:config中的设置更改,用户可能在我的插件运行时更改了这些设置。有问题的设置是浏览器的一部分,不是由我的插件创建的 当用户使用“首选项/服务”模块使用我的加载项时,我可以手动读取和设置它们,但如果用户独立于我的加载项更改了about config中的设置,我希望能够在我的加载项中进行适当的更改 “simple prefs”模块提供了一个侦听器,但它仅适用于特定于应用程序的设置,如“extension.myaddon.mypreference”,其中我需要查
如果有人能为我指出正确的方向,我将非常感激。您需要使用一些XPCOM,即/(例如via)。这与
preferences/service
和simple prefs
包装的内容相同
以下是一个完整的示例:
const {Ci, Cu} = require("chrome");
const {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
function observe(subject, topic, data) {
// instanceof actually also "casts" subject
if (!(subject instanceof Ci.nsIPrefBranch)) {
return;
}
console.error(subject.root, "has a value of", subject.getIntPref(""), "now");
}
var branch = Services.prefs.getBranch("network.http.max-connections")
branch.addObserver("", observe, false);
exports.onUnload = function() {
// Need to remove our observer again! This isn't automatic and will leak
// otherwise.
branch.removeObserver("", observe);
};
谢谢你,这真是妙计。我感谢你的帮助和时间