どのWindowsXPテーマが使用されているかを検出する方法はありますか?
特定のAPI呼び出しを行うことはできないと思いますが、いくつかのDOM要素、つまり機能の検出をチェックすることで、それを理解できる可能性があります。
別の質問:クラシックテーマはWindowsVistaまたはWindows7にも存在しますか?
編集-これは私の解決策です:
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ボックスを検出する方法を理解することです。私はこれをWindowsXPでのみテストしたので、vistaとwindows 7は異なる色の値を与える可能性がありますが、簡単に追加できるはずです。
これが実際のデモページです。