¿Hay alguna manera de detectar qué tema de Windows XP está en uso?javascript: detectar si XP o el tema clásico de Windows está habilitado
Sospecho que no hay una llamada api específica que pueda hacer, pero puede averiguarlo marcando algo en algún elemento DOM, es decir, detección de características.
Otra pregunta: ¿existe el tema clásico incluso en Windows Vista o Windows 7?
edición - este es mi solución:
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];
}
}
El siguiente paso es averiguar lo que esta función devuelve en máquinas que no son XP y/o encontrar la manera de detectar las cajas de ventanas. He probado esto solo en Windows XP, por lo que vista y Windows 7 pueden dar diferentes valores de color, sin embargo, debería ser fácil de agregar.
Aquí es una página de prueba de esto en acción:
http://programmingdrunk.com/current-projects/isXpTheme/
Sí, el tema clásico aún existe en las versiones recientes de Windows. Sin embargo, dudo mucho de que el tema en uso sea algo que una página web pueda saber. Si hubiera un método, creo que los anuncios emergentes que parecen una ventana de Windows XP habrían usado el estilo correcto hace años ;-) – Joey
¡Muy bien, mkoryak! Resultados de la prueba en Win XP Service Pack 3 en una VM: Firefox 3.5 detecta ambos correctamente; IE6 no puede decir nada (pero creo que era de esperar). –
@Pekka: en realidad fue una tonta supervisión de mi parte lo que hizo que IE6 no funcionara. Lo arreglé y ahora IE6 funciona =) – mkoryak