gpt4 book ai didi

javascript:检测是否启用了 XP 或经典 Windows 主题

转载 作者:可可西里 更新时间:2023-11-01 13:26:27 32 4
gpt4 key购买 nike

有什么方法可以检测正在使用的 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 可能会提供不同的颜色值,不过应该很容易添加。

这是一个演示页面:

http://programmingdrunk.com/current-projects/isXpTheme/

最佳答案

有趣的问题。唯一想到的是检查默认按钮的大小。它在两个主题中的样式都不同,我想它的大小也不同。如果你给按钮一个固定的文本大小,这可能是半可靠的。

我将启动 XP 虚拟机并检查大小是否实际不同。

更新:它们确实不同。

谷歌“我感觉很幸运”按钮

  • 经典皮肤:99 x 23.75(原文如此!)像素
  • 在 XP 皮肤中:97 x 21.75 像素

想到的第二种不太可靠的方法是给元素一个 CSS system colour然后解析生成的计算颜色。在经典模式下,ButtonFace 属性将具有特定的灰色阴影,我认为在默认皮肤中是不同的。同样,必须进行测试。

更新:它们也不同。

ButtonFace CSS 系统颜色

  • 在 Windows 经典皮肤中:#D4D0C8
  • 在 XP 皮肤中:#ECE9D8

显然,如果用户对颜色和/或字体大小进行了任何自定义,这两种方法都会失效。字体大小方法是更可靠的 IMO,因为使用它的人更少。

当然,您必须有所有 Windows 代的比较表,因为可以推测,经典皮肤和默认皮肤的值会有所不同。

关于javascript:检测是否启用了 XP 或经典 Windows 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450133/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com