2013-08-23 46 views
0

Conditional comments have been deprecated since IE10這破壞了一些遺留代碼,用於檢測當前的Web瀏覽器是否爲IE瀏覽器。請參閱https://gist.github.com/padolsey/527683檢測Internet Explorer(使用IE10 +也是如此!)

我搜索適用於所有版本Internet Explorer(不僅僅是IE9和更低版本)的解決方案。

感謝

+2

一種解決*什麼*什麼呢? – Pointy

+0

在這篇文章中的答案可能會指導你在正確的方向:[如何只針對Internet Explorer 10的特定情況,如特定於Internet Explorer的CSS或Internet Explorer特定的JavaScript代碼?](http://stackoverflow.com/questions/9900311/how-do-i-target-only-internet-explorer-10-for-certain-circumstances-like-internet-e) –

+0

我想提醒的是,做功能檢查通常比較明智和簡單瀏覽器檢查。您可能會考慮如何使用MODERNIZR @ http://modernizr.com/ – Steve

回答

-1

繼從 「ecstaticpeon」 上https://gist.github.com/padolsey/527683評論,我發現這工作。

自己嘗試一下在http://jsfiddle.net/P5z4N/4/

var ie_version = (function() { 
    var undef, 
     v = 3, 
     div = document.createElement('div'), 
     all = div.getElementsByTagName('i'); 

    while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', 
     all[0] 
    ); 

    return v > 4 ? v : undef; 
}()); 
/*@cc_on 
if (typeof(ie_version) == 'undefined') { 
    ie_version = parseInt(@_jscript_version); 
} 
@*/ 

下面的JavaScript也似乎工作:

嘗試在http://jsfiddle.net/e8G3S/1/

// Returns the version of Internet Explorer or a -1 (indicating the use of another browser) 
function getInternetExplorerVersion(){ 
    var rv = -1; // Return value assumes failure. 
    if (navigator.appName == 'Microsoft Internet Explorer'){ 
    var ua = navigator.userAgent; 
    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
    if (re.exec(ua) != null) 
     rv = parseFloat(RegExp.$1); 
    } 
    return rv; 
} 
function displayAlert(){ 
    var msg = "You're not using Internet Explorer."; 
    var ver = getInternetExplorerVersion(); 
    if (ver > -1){ 
    if (ver <= 8.0){ 
     msg = "You're using Internet Explorer 8 or below" ; 
    } 
    else if (ver >= 9.0 && ver < 10.0){ 
     msg = "You're using IE 9 or above"; 
    } 
    else{ 
     msg = "You're using IE 10 or above"; 
    } 
    } 
    alert(msg); 
+0

這些策略在IE11和未來版本中將失敗。 – EricLaw

+0

@EricLaw:你能解釋一下爲什麼嗎? –

+0

由於IE團隊有意破壞了這些方法,因爲它們是互操作性問題的常見來源。具體而言,IE11的AppName不是「Microsoft Internet Explorer」,並且默認的用戶代理字符串不再包含「MSIE」。 – EricLaw

相關問題