2013-04-21 10 views
40

Làm cách nào để tạo hộp thông báo xuất hiện khi tải trang nếu người dùng đang sử dụng IE 10?Kiểm tra IE 10

function ieMessage() { 
    alert("Hello you are using I.E.10"); 
} 

Trang web của tôi là một biểu tượng JSF (XHTML).

+6

Tại sao bạn cần phải làm điều này? – Ryan

+0

dự án dành cho trường học, phải hiển thị thông báo trong các trình duyệt khác nhau :) – user2292674

+0

[Phát hiện trình duyệt bằng javascript?] (Http://stackoverflow.com/questions/2400935/browser-detection-in-javascript). – Vucko

Trả lời

54

Các wa thực y để phát hiện này, mà không bình luận có điều kiện và không có User Agent sniffing là với biên soạn có điều kiện:

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

Sau khi chạy mã này, bạn có thể sử dụng sau đây bất cứ lúc nào sau:

if (isIE10) { 
    // Using Internet Explorer 10 
} 

tham khảo: How can I detect IE10 from JS when browser mode is IE9?


CẬP NHẬT:

Để 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).

+0

Cảm ơn rất nhiều đang làm việc hoàn hảo – user2292674

+1

Nó sẽ là rất nhiều khó chịu hơn để kiểm tra điều này trong các phiên bản IE khác nhau, tuy nhiên. –

+0

@AlexW Không thực sự. Nó khá dễ dàng để sửa đổi để có được phiên bản IE trở lại (thay vì đúng/sai dựa trên một phiên bản nhất định), và thực sự đáng tin cậy. Vì vậy, tôi muốn sử dụng một cái gì đó mà các công trình và không thể được giả mạo hơn một cái gì đó mà có thể thay đổi và được thay đổi – Ian

27

Nói chung, việc thực hành thao tác thu thập tác nhân người dùng và thu thập/nhận xét có điều kiện là tốt nhất nên tránh. Thay vào đó, tốt hơn nên sử dụng feature detection, graceful degradationprogressive enhancement. Tuy nhiên, trong vài trường hợp cạnh nơi mà nó là thuận tiện hơn cho các nhà phát triển để phát hiện các phiên bản trình duyệt, bạn có thể sử dụng các đoạn mã sau:

tuyên bố if này sẽ chỉ thực thi trên trình duyệt IE 10

// IF THE BROWSER IS INTERNET EXPLORER 10 
if (navigator.appVersion.indexOf("MSIE 10") !== -1) 
{ 
    window.alert('This is IE 10'); 
} 

này if tuyên bố sẽ chỉ thực hiện trên IE 11

// IF THE BROWSER IS INTERNET EXPLORER 11 
var UAString = navigator.userAgent; 
if (UAString.indexOf("Trident") !== -1 && UAString.indexOf("rv:11") !== -1) 
{ 
    window.alert('This is IE 11'); 
} 

http://jsfiddle.net/Qz97n/

+0

Cảm ơn bạn sẽ thử ngay bây giờ :) – user2292674

+0

Cảm ơn rất nhiều đang hoạt động hoàn hảo – user2292674

+1

Mã tuyệt vời! Tôi đã tìm kiếm giờ làm thế nào để làm điều này. 1 để bao gồm cả IE 11 quá;) – www139

20

Dưới đây là một phương pháp để nhận được IE hiện tại hoặc phiên bản trình duyệt IE:

function IE(v) { 
    return RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent); 
} 

Đây là cách bạn có thể sử dụng nó:

if(IE()) alert('Internet Explorer!'); 
if(IE(10)) alert('Internet Explorer 10!'); 
+0

v đến từ đâu? – Rhyso

+1

@Tại sao đó là thông số bạn chuyển vào hàm - trong trường hợp này là số 10. –

+0

xin lỗi đã xem xét ví dụ sử dụng :) – Rhyso