5

Tôi cần phát hiện chỉ bằng javascript đơn giản (không có khung công tác) khi trình duyệt IE10 mặc dù cài đặt chế độ trình duyệt.Làm cách nào để phát hiện IE10 từ JS khi chế độ trình duyệt là IE9?

Một số nhận xét: - Tôi cần phát hiện trình duyệt, không phải là tùy chọn để phát hiện các tính năng vì mục đích giảm thiểu lỗi trình duyệt. - Tôi đã thử các cách phổ biến (như chuỗi UA hoặc phát hiện tính năng) không thành công, khi tôi chuyển chế độ trình duyệt sang IE9 mọi khía cạnh có thể đề xuất trong IE10 chỉ biến mất.

+0

Lỗi "trình duyệt" chính xác mà bạn đang cố gắng giảm thiểu là gì? – Ian

+0

Tôi không chắc chắn nếu thay đổi chế độ trình duyệt sẽ thay đổi biến nội bộ, nhưng bạn có thể sử dụng trình biên dịch có điều kiện và kiểm tra '@ _jscript_version' bắt đầu bằng" 10 "(phiên bản chính). – Ian

+0

Trong một số trường hợp, các đoạn flash không bao gồm toàn bộ vùng chứa, chúng nhỏ hơn 1px. Bạn có thể xây dựng giải pháp của bạn, nó không có mùi là một giải pháp js. – gztomas

Trả lời

12

Nếu bạn muốn để phát hiện trình duyệt mà bạn đang làm việc với, IE có một tính năng đặc biệt, gọi là có điều kiện biên soạn - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

Để có được phiên bản, bạn muốn sử dụng @_jscript_version. Vì vậy, trong Javascript, tôi muốn sử dụng:

<script type="text/javascript"> 
    var isIE10 = false; 
    /*@cc_on 
     if (/^10/.test(@_jscript_version)) { 
      isIE10 = true; 
     } 
    @*/ 
    console.log(isIE10); 
</script> 

Tôi không có IE10, nhưng khi thử nghiệm với IE9, có vẻ như nó hoạt động. Nếu tôi thay đổi chế độ trình duyệt thành 7 hoặc 8, @_jscript_version có phiên bản trình duyệt JScript thực (nó vẫn giữ nguyên là 9 trong trường hợp của tôi).

Để xem danh sách các phiên bản JScript, bạn có thể xem chúng tại đây - http://en.wikipedia.org/wiki/JScript#Versions. Nó không liệt kê IE10, nhưng tôi cho rằng đó là 10. Trước IE9, họ sử dụng các con số không phù hợp với phiên bản trình duyệt, nhưng có thể đi đúng hướng từ 9. Bạn sẽ phải xem những gì @_jscript_version là mặc định cho 10 , nhưng tôi cho rằng nó bắt đầu bằng "10" và có một phiên bản nhỏ có thể.


UPDATE:

Để tránh việc rút gọn các ý kiến, bạn có thể sử dụng một cái gì đó như:

var IE = (function() { 
    "use strict"; 

    var ret, isTheBrowser, 
     actualVersion, 
     jscriptMap, jscriptVersion; 

    isTheBrowser = false; 
    jscriptMap = { 
     "5.5": "5.5", 
     "5.6": "6", 
     "5.7": "7", 
     "5.8": "8", 
     "9": "9", 
     "10": "10" 
    }; 
    jscriptVersion = new Function("/*@cc_on return @_jscript_version; @*/")(); 

    if (jscriptVersion !== undefined) { 
     isTheBrowser = true; 
     actualVersion = jscriptMap[jscriptVersion]; 
    } 

    ret = { 
     isTheBrowser: isTheBrowser, 
     actualVersion: actualVersion 
    }; 

    return ret; 
}()); 

Và truy cập vào các tính chất như IE.isTheBrowserIE.actualVersion (được dịch từ các giá trị nội tại của Phiên bản JScript).

Các vấn đề liên quan