如何从 Firefox 附加组件中读取配置文件首选项?
How to read profile preferences from Firefox add-on?
我正在这样做(Firefox 66.0.5,MacOS):
var prefs = Components.classes['@mozilla.org/preferences-service;1']
.getService(Components.interfaces.nsIPrefBranch);
var x = pref.getCharPref('extensions.foo.x');
我明白了:
JavaScript error: moz-extension://9390a488-d749-d140-91b6-fb1b2a86053f/foo.js,
line 1: TypeError: Components.classes is undefined
阅读个人资料偏好的正确方法是什么?
我试过这个:
var prefs = Components.classesByID['@mozilla.org/preferences-service;1']
.getService(Components.interfaces.nsIPrefBranch);
得到这个:
JavaScript error: moz-extension://ebac8f96-717d-0c4b-b2d3-a7d6f3515843/auth.js,
line 1: TypeError: Components.classesByID is undefined
WebExtensions 非常 更改用户首选项的能力有限。有一些,目前有 14 个,您可以通过 browserSettings
API. There are others which are effectively changed through other WebExtension APIs (e.g. proxy
) 影响,但不能直接影响。遗憾的是,没有直接的方法从 WebExtension 读取或设置用户首选项。直接调整用户首选项的功能仅适用于旧样式的附加组件(从 Firefox 57 开始全部删除)。
关于您使用 Components
以及您遇到的具体错误,请参阅我对 的回答以获取更多详细信息。在 WebExtension 中无法使用 Components
。
我能想到的唯一可以在 Firefox 发行版中调整首选项的方法是使用 Native messaging 与您也安装的本机应用程序通信。在 Firefox exits/stops/is 关闭后,本机应用程序可以读取和更改 Firefox 配置文件 运行 配置文件目录中的配置文件。然后它可以重新启动 Firefox。
在 Firefox 的 Nightly 和 Developer Edition 版本中,应该仍然可以使用 WebExtensions Experiment,这将允许您使用 Components
界面更改您想要的首选项。但是,如果这是您要公开分发的扩展程序,那不是一个可行的解决方案。
我正在这样做(Firefox 66.0.5,MacOS):
var prefs = Components.classes['@mozilla.org/preferences-service;1']
.getService(Components.interfaces.nsIPrefBranch);
var x = pref.getCharPref('extensions.foo.x');
我明白了:
JavaScript error: moz-extension://9390a488-d749-d140-91b6-fb1b2a86053f/foo.js,
line 1: TypeError: Components.classes is undefined
阅读个人资料偏好的正确方法是什么?
我试过这个:
var prefs = Components.classesByID['@mozilla.org/preferences-service;1']
.getService(Components.interfaces.nsIPrefBranch);
得到这个:
JavaScript error: moz-extension://ebac8f96-717d-0c4b-b2d3-a7d6f3515843/auth.js,
line 1: TypeError: Components.classesByID is undefined
WebExtensions 非常 更改用户首选项的能力有限。有一些,目前有 14 个,您可以通过 browserSettings
API. There are others which are effectively changed through other WebExtension APIs (e.g. proxy
) 影响,但不能直接影响。遗憾的是,没有直接的方法从 WebExtension 读取或设置用户首选项。直接调整用户首选项的功能仅适用于旧样式的附加组件(从 Firefox 57 开始全部删除)。
关于您使用 Components
以及您遇到的具体错误,请参阅我对 Components
。
我能想到的唯一可以在 Firefox 发行版中调整首选项的方法是使用 Native messaging 与您也安装的本机应用程序通信。在 Firefox exits/stops/is 关闭后,本机应用程序可以读取和更改 Firefox 配置文件 运行 配置文件目录中的配置文件。然后它可以重新启动 Firefox。
在 Firefox 的 Nightly 和 Developer Edition 版本中,应该仍然可以使用 WebExtensions Experiment,这将允许您使用 Components
界面更改您想要的首选项。但是,如果这是您要公开分发的扩展程序,那不是一个可行的解决方案。