Có cách nào để phát hiện chủ đề Windows XP nào đang được sử dụng không?javascript: phát hiện xem chủ đề cửa sổ XP hoặc Classic có được bật không
Tôi nghi ngờ rằng không có cuộc gọi api cụ thể nào bạn có thể thực hiện, nhưng bạn có thể tìm ra bằng cách kiểm tra điều gì đó trên một số phần tử DOM, tức là phát hiện tính năng.
Một câu hỏi khác: hiện chủ đề cổ điển có tồn tại trên windows vista hoặc windows 7 không?
chỉnh sửa - đây là giải pháp của tôi:
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];
}
}
Bước tiếp theo là tìm ra những gì hàm này trả về máy phi xp và/hoặc tìm ra cách để phát hiện hộp cửa sổ. Tôi đã thử nghiệm điều này trong Windows XP chỉ, vì vậy vista và windows 7 có thể cung cấp cho các giá trị màu sắc khác nhau, nó nên được dễ dàng để mặc dù.
Đây là một trang giới thiệu về điều này trong hành động:
http://programmingdrunk.com/current-projects/isXpTheme/
Có, chủ đề cổ điển vẫn tồn tại trên các phiên bản Windows gần đây. Tôi rất nghi ngờ mặc dù chủ đề được sử dụng là thứ mà một trang web có thể biết. Nếu có một phương pháp, tôi nghĩ rằng các quảng cáo popup trông giống như một cửa sổ Windows XP đã sử dụng đúng kiểu cách đây vài năm ;-) – Joey
Công cụ tuyệt vời mkoryak! Kết quả thử nghiệm trên gói dịch vụ Win XP 3 trong máy ảo: Firefox 3.5 phát hiện chính xác cả hai; IE6 có thể nói không (nhưng tôi nghĩ rằng đó là để được mong đợi.) –
@ Pekka: thực sự nó là một sự giám sát ngớ ngẩn trên một phần của tôi mà làm cho IE6 không hoạt động. Tôi cố định nó và bây giờ IE6 hoạt động =) – mkoryak