Firefox插件:如何根据平台设置默认首选项

Firefox addons: How to set default preferences depending on platform?

本文关键字:平台 设置 默认 首选项 何根 插件 Firefox      更新时间:2024-01-22

我正在为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关于默认偏好的文章:

实际的文件,尽管有.js扩展名,但不是JavaScript文件。您不能在其中设置变量,也不能进行任何类型的程序流控制(if、循环等),甚至不能计算值(即3600*24*5)。这样做将导致Mozilla在没有任何通知、警告、错误或异常的情况下停止处理您的首选项文件。可以把它看作一个.ini文件。评论是完全可以接受的。

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

以下是MDN的示例:

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

如果需要,可以使用首选项API将路径另存为首选项。

另一个需要考虑的选项是捆绑(如果许可证允许),在这种情况下,您可以在清单中指示特定于平台的文件。