如何从 Firefox 插件读取配置文件首选项?

2023-12-25

我正在这样做(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

Web 扩展是very他们更改用户偏好的能力有限。您可以通过以下方式影响其中的一些(目前为 14 个)browserSettings https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettingsAPI。还有其他一些是有效地通过其他 WebExtension API 进行更改(例如proxy https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy),但没有直接的。不幸的是,没有直接的方法可以从 WebExtension 读取或设置用户首选项。直接调整用户首选项的功能仅适用于旧样式的附加组件(从 Firefox 57 开始全部删除)。

至于你的使用Components以及您遇到的具体错误,请参阅我的回答无法在 WebExtensions 中使用组件:出现“ReferenceError:Cu 未定义” https://stackoverflow.com/a/44608767/3773011了解更多详情。指某东西的用途Components在 WebExtension 中是不可能的。

我能想到的在 Firefox 发行版中调整首选项的唯一方法是使用原生消息传递 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging与您也安装的本机应用程序进行通信。 Firefox 退出/停止/关闭后,本机应用程序可以读取并更改正在运行的 Firefox 配置文件的配置文件目录中的配置文件。然后它可以重新启动 Firefox。

在 Firefox 的 Nightly 和 Developer Edition 版本中,应该仍然可以使用Web扩展实验 https://webextensions-experiments.readthedocs.io/en/latest/index.html,这将允许您使用Components界面。但是,如果这是您想要公开分发的扩展,那么这不是一个可行的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Firefox 插件读取配置文件首选项? 的相关文章

随机推荐