将操作系统和颜色主题的特定图标用于JPM中的切换按钮

问题描述 投票:1回答:1

[在Firefox中,根据主题和操作系统,图标是不同的。示例:

在Linux上:Windows(来源:saranitus.com

轻量级主题:Personas

注意在Windows 10上图标在人物角色上如何变暗,在角色上为白色(很明显)。

事实是,my addon向Firefox菜单添加了一个新按钮(准确地说是一个切换按钮),目前只有一个静态图标。我知道在JPM(或CFX,几乎相同的东西)上制作了一个插件来实现此功能,但是我不记得是哪个,也不记得是如何实现的。如何根据操作系统和主题更改图标?

firefox-addon-sdk togglebutton
1个回答
0
投票

找到了。这是Mozilla的Addon兼容性报告器。

将此添加到您的启动代码:

var {Cc, Ci, Cu} = require("chrome");

if ( Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Windows NT 10.0") > -1 ) {
    var icontype = "Modern";
}
else if ( Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Windows NT 6.3") > -1 || Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Windows NT 6.2") > -1) {
    var icontype = "Metro";
}
else if ( Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Windows NT 6.1") > -1 || Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Windows NT 6.0") > -1) {
    var icontype = "Aero";
}
else if ( Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser").navigator.oscpu.indexOf("Mac OS X") > -1 ) {
    var icontype = "Aqua";
}
else {
    var icontype = "Linux";

}

然后,在声明图标时,只需键入:

icon: {
  "16": "./" + icontype + "_16.png",
  "32": "./" + icontype + "_32.png"
},

因此,当您为Mac OS X创建图标时,将其拖放为data/Aqua_16.png,它应该可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.