Tôi có một số đường dẫn mã cụ thể cho IE 10 và phần còn lại của các phiên bản IE. Nếu IE10 đang chạy ở chế độ tương thích, phiên bản trình duyệt được đặt thành 7.0. Có cách nào để phát hiện nếu nó là IE 10 không phụ thuộc vào chế độ tiêu chuẩn/khả năng tương thích sử dụng JavaScript/JQuery?Phát hiện chế độ tương thích IE10
Trả lời
Trident giá trị trong chuỗi tác nhân người dùng chỉ ra phiên bản thực tế của IE được chạy.
Trừ khi tất nhiên, IE11 thay đổi cách thức hoạt động của nó. – Matthew
Bạn có thể phát hiện này bằng cách sử dụng chuỗi navigator.userAgent
, ví dụ
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E;. NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Zune 4.7)"
Trident/6.0 có nghĩa IE10
MSIE 7.0 có nghĩa là compatibilit chế độ y
Thông tin chi tiết: https://stackoverflow.com/a/5825518/255654
Cảm ơn, tôi hiểu nó. – ABC
Tôi nghĩ đây là câu trả lời rõ ràng hơn. –
Nếu bạn đặt nó trong chế độ xem compat thông qua các công cụ dev, điều này có vẻ đúng. Nếu nó được đưa vào chế độ xem tương thích vì Cài đặt Chế độ xem Tương thích trong trình đơn Công cụ (ví dụ: theo tên miền), nó có vẻ như sử dụng các tiêu chuẩn bình thường userAgent. –
Đây là những gì tôi sử dụng từ JQuery .ready
$(document).ready(function() {
var iec = new IECompatibility();
alert('IsIE: ' + iec.IsIE + '\nVersion: ' + iec.Version + '\nCompatability On: ' + iec.IsOn);
});
function IECompatibility() {
var agentStr = navigator.userAgent;
this.IsIE = false;
this.IsOn = undefined; //defined only if IE
this.Version = undefined;
if (agentStr.indexOf("MSIE 7.0") > -1) {
this.IsIE = true;
this.IsOn = true;
if (agentStr.indexOf("Trident/6.0") > -1) {
this.Version = 'IE10';
} else if (agentStr.indexOf("Trident/5.0") > -1) {
this.Version = 'IE9';
} else if (agentStr.indexOf("Trident/4.0") > -1) {
this.Version = 'IE8';
} else {
this.IsOn = false; // compatability mimics 7, thus not on
this.Version = 'IE7';
}
} //IE 7
}
Bến Hobgood
Tôi tin rằng mã của bạn chỉ đặt Isie và Phiên bản nếu chế độ tương thích được phát hiện trong chuỗi UA. Điều đó có chủ ý không? – ifugu
này nên làm việc phát hiện chế độ tương thích cho MSIE.
iecheck.js
function trueOrFalse() {
return true;
}
function IeVersion() {
//Set defaults
var value = {
IsIE: false,
TrueVersion: 0,
ActingVersion: 0,
CompatibilityMode: false
};
//Try to find the Trident version number
var trident = navigator.userAgent.match(/Trident\/(\d+)/);
if (trident) {
value.IsIE = true;
//Convert from the Trident version number to the IE version number
value.TrueVersion = parseInt(trident[1], 10) + 4;
}
//Try to find the MSIE number
var msie = navigator.userAgent.match(/MSIE (\d+)/);
if (msie) {
value.IsIE = true;
//Find the IE version number from the user agent string
value.ActingVersion = parseInt(msie[1]);
} else {
//Must be IE 11 in "edge" mode
value.ActingVersion = value.TrueVersion;
}
//If we have both a Trident and MSIE version number, see if they're different
if (value.IsIE && value.TrueVersion > 0 && value.ActingVersion > 0) {
//In compatibility mode if the trident number doesn't match up with the MSIE number
value.CompatibilityMode = value.TrueVersion != value.ActingVersion;
}
return value;
}
iecheck.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Testing IE Compatibility Mode</title>
<script src="iecheck.js" type="text/javascript"></script>
</head>
<body>
<div id="results">Results: </div>
</br>
<script type="text/javascript">
var ie = IeVersion();
document.write("IsIE: " + ie.IsIE + "</br>");
document.write("TrueVersion: " + ie.TrueVersion + "</br>");
document.write("ActingVersion: " + ie.ActingVersion + "</br>");
document.write("CompatibilityMode: " + ie.CompatibilityMode + "</br>");
</script>
</body>
</html>
- 1. Lực lượng IE10 chạy trong Chế độ xem tương thích IE10?
- 2. vấn đề tương thích là IE10
- 3. phát hiện ứng dụng iPhone chạy trên iPad ở chế độ tương thích
- 4. Làm cách nào để phát hiện IE10 từ JS khi chế độ trình duyệt là IE9?
- 5. Thực hiện chế độ php (và các chế độ dẫn xuất chế độ cc khác) tương thích với Emacs 23
- 6. Không nên "ghi đè tiêu đề IE = cạnh" X-UA tương thích "Hiển thị các trang web mạng nội bộ trong Chế độ xem tương thích" trong IE10?
- 7. Sự khác nhau giữa 'chế độ quirks' và 'chế độ tương thích' trong IE là gì?
- 8. Force IE ra khỏi Chế độ tương thích
- 9. Làm cách nào để phát hiện xem IE8 có đang chạy trong chế độ xem tương thích không?
- 10. Phát hiện chế độ thử nghiệm django
- 11. Tắt Chế độ tương thích IE8, Tốt hay Xấu?
- 12. ASP.NET App - Đặt Chế độ tương thích IE7?
- 13. Tắt Chế độ tương thích IE 8 cho trang web
- 14. Buộc IE8 vào Chế độ Tương thích IE7
- 15. IE10 - Cài đặt chế độ trình duyệt & tài liệu cụ thể
- 16. AndEngineRuntimeException: Đã phát hiện thiết bị không tương thích.
- 17. Phát hiện các phụ thuộc không tương thích trong Maven?
- 18. Cách phát hiện tương thích HTML 5 trong trình duyệt
- 19. Phát hiện chế độ bảo vệ Vista IE7 với Javascript
- 20. chế độ có thể phát hiện Disable Bluetooth trên Android
- 21. Công cụ dành cho nhà phát triển của IE 8: Chế độ trình duyệt: IE 7, IE 8, nhưng IE 8 "Chế độ xem tương thích" là gì?
- 22. Làm cách nào để buộc chế độ tương thích cho tất cả các phiên bản của IE?
- 23. lập trình phát hiện chế độ Release/Debug (NET)
- 24. Phát hiện chế độ toàn màn hình trong Windows
- 25. Debug.Assert Xuất hiện trong Chế độ Phát hành
- 26. Phát hiện chế độ trên máy bay trên iOS
- 27. xác định lý do trang bị hiển thị ở chế độ tương thích?
- 28. IE9 trong chế độ tương thích không hiển thị phong cách CSS đúng
- 29. Cách gỡ lỗi ứng dụng ở chế độ tương thích trên iOS 7?
- 30. IE8, chế độ xem tương thích trên các tệp cục bộ?
toàn bộ các điểm chế độ tương thích là nó là nghĩa vụ phải được giả vờ là IE7, vì vậy tất cả các phiên bản bình thường phát hiện thủ thuật sẽ nói 'IE7'. Điều đó nói rằng, có một vài thủ thuật mà bạn có thể sử dụng và một số câu hỏi tương tự ở đây có thể đã cung cấp câu trả lời ... Xem http://stackoverflow.com/questions/1328963/detect-ie8-compatibility-mode, http: //stackoverflow.com/questions/5825385/javascript-can-i-detect-ie9-if-its-in-ie7-or-ie8-compatibility-mode, v.v. (Tôi biết đó là dành cho IE8 và IE9, nhưng có thể một số mẹo có thể giúp ích?) – Spudley
@Spudley, đinh ba là cách phát hiện tôi đoán. – ABC
không quan tâm, tại sao bạn lại cần phát hiện chế độ compat? Bạn có thể tránh để người dùng chạy ở chế độ tương thích bằng cách sử dụng các thẻ meta thích hợp, vì vậy tôi không biết tại sao bạn cần phải phát hiện ra nó. – Spudley