5

儘管瀏覽器模式設置,但瀏覽器爲IE10時,我需要使用普通的javascript(無框架)進行檢測。當瀏覽器模式爲IE9時,如何從JS中檢測IE10?

一些評論: - 我確實需要檢測瀏覽器,它不是檢測功能的選項,因爲目的是減輕瀏覽器的bug。 - 當我將瀏覽器模式切換到IE9時,我試過了常見的方式(如UA字符串或特徵檢測),但可能暗示在IE10中消失的每個方面。

+0

究竟是什麼是你試圖緩解的「瀏覽器錯誤」? – Ian 2013-04-04 19:24:58

+0

我不確定更改瀏覽器模式是否會更改內部變量,但是可以使用條件編譯並檢查「@ _jscript_version」是否以「10」(主要版本)開頭。 – Ian 2013-04-04 19:34:37

+0

在某些情況下,閃光片不覆蓋整個容器區域,它們是1px較窄。你能否詳細說明你的解決方案,它不會是一個js解決方案。 – gztomas 2013-04-04 19:37:38

回答

12

如果要檢測你使用,IE有一個特色工作的瀏覽器,稱爲條件編譯 - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

要獲得的版本,你會使用@_jscript_version。所以在Javascript中,我會使用:

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

我沒有IE10,但使用IE9測試時,它似乎工作。如果我將瀏覽器模式更改爲7或8,@_jscript_version具有真正的瀏覽器JScript版本(在我的情況下,它保持爲9)。

要查看JScript版本列表,您可以在這裏看到它們 - http://en.wikipedia.org/wiki/JScript#Versions。它沒有列出IE10,但我認爲它是10.在IE9之前,他們使用的數字與瀏覽器版本不一致,但可能從9開始正確。您需要查看@_jscript_version默認爲10 ,但我認爲它以「10」開頭,並且可能有一個小版本。


UPDATE:

爲了避免意見微小,可以使用類似:

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; 
}()); 

和訪問像IE.isTheBrowserIE.actualVersion(這是從內部值轉換屬性JScript版本)。

相關問題