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

时间:2013-12-02 21:19:58

标签: javascript firefox firefox-addon

我正在为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");

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

1 个答案:

答案 0 :(得分:2)

不,您无法在默认首选项中设置特定于平台的值。根据{{​​3}}:

  

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

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

以下是来自MDN的示例:

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

alert(xulRuntime.OS);

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

要考虑的另一个选择是捆绑(如果许可允许),在这种情况下,您可以在清单中指明Preferences API