gpt4 book ai didi

javascript - Firefox 插件 : How to set default preferences depending on platform?

转载 作者:行者123 更新时间:2023-11-29 14:54:24 25 4
gpt4 key购买 nike

我正在为 Mozilla Firefox 创建一个插件,其中一个首选项是文件系统中的文件路径(具体来说,可执行文件或 VLC 播放器的命令)。该文件路径可通过首选项窗口更改,但为该首选项添加默认值会有所帮助。

由于插件应该在 Linux 和 Windows 操作系统上工作,我希望包括每个操作系统的默认文件路径,所以它看起来像这样:

Linux: /usr/bin/vlc

Windows x86 C:\\Program Files\\VideoLan\\VLC\\vlc.exe

Windows x86_64 C:\\Program Files (x86)\\VideoLan\\VLC\\vlc.exe(因为默认的 VLC 安装总是 32 位的)

有办法实现吗?到目前为止,我只能放置一个描述首选项的 defaults.js 文件(例如对于 Linux):

pref("extensions.vlc_shortcut.vlc_filepath", "/usr/bin/vlc");

该文件位于 my_extension/defaults/preferences/defaults.js 中,我尝试将 if-else 语句放入文件中,但没有效果。我什至尝试放置以下 if 语句:

if(true)
pref("extensions.vlc_shortcut.vlc_filepath", "/usr/bin/vlc");

但它会忽略所有内容,就好像它是一个空白文件一样。

最佳答案

不可以,您不能在默认首选项中设置特定于平台的值。根据MDN article on default preferences :

The actual file, despite having .js extension, is not a JavaScript file. You may not set variables inside of it, nor may do any kind of program flow control (ifs, loops etc.) nor even calculated values (i.e. 3600 * 24 * 5). Doing so will cause Mozilla to stop processing your preferences file without any notification, warning, error, or exception. Think of it more as an .ini file. Comments are perfectly acceptable.

另一种方法是使用 nsIXULRuntime相应地确定主机操作系统和路径。

这是来自 MDN 的示例:

var xulRuntime = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime);

alert(xulRuntime.OS);

如果需要,您可以使用 Preferences API 将路径保存为首选项.

另一个要考虑的选项是捆绑(如果许可证允许),在这种情况下您可以指明 platform-specific files在 list 中。

关于javascript - Firefox 插件 : How to set default preferences depending on platform?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com