我正在为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");
但它忽略了所有内容,就像它是一个空白文件一样。
答案 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。