有没有办法检测正在使用的Windows XP主题?
我怀疑没有特定的API调用可以实现,但您可能可以通过检查某些DOM元素上的内容来找出,例如功能检测。
另一个问题:在Windows Vista或Windows 7上是否存在经典主题?
编辑 - 这是我的解决方案:
function isXpTheme() {
var rgb;
var map = { "rgb(212,208,200)" : false,
"rgb(236,233,216)" : true };
var $elem = $("<button>");
$elem.css("backgroundColor", "ButtonFace");
$("body").append($elem);
var elem = $elem.get(0);
if (document.defaultView && document.defaultView.getComputedStyle) {
s = document.defaultView.getComputedStyle(elem, "");
rgb = s && s.getPropertyValue("background-color");
} else if (elem.currentStyle) {
rgb = (function (el) { // get a rgb based color on IE
var oRG =document.body.createTextRange();
oRG.moveToElementText(el);
var iClr=oRG.queryCommandValue("BackColor");
return "rgb("+(iClr & 0xFF)+","+((iClr & 0xFF00)>>8)+","+
((iClr & 0xFF0000)>>16)+")";
})(elem);
} else if (elem.style["backgroundColor"]) {
rgb = elem.style["backgroundColor"];
} else {
rgb = null;
}
$elem.remove();
rgb = rgb.replace(/[ ]+/g,"")
if(rgb){;
return map[rgb];
}
}
下一步是找出在非XP机器上此功能返回的内容或者找出如何检测Windows系统。我仅在Windows XP中进行了测试,因此vista和Windows 7可能会给出不同的颜色值,但很容易添加。
以下是此功能的演示页面: