簡體   English   中英

當瀏覽器模式為IE9時,如何從JS檢測IE10?

[英]How can I detect IE10 from JS when browser mode is IE9?

盡管瀏覽器模式設置,但是當瀏覽器是IE10時,我需要使用簡單的javascript(無框架)進行檢測。

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

如果你想檢測你正在使用的瀏覽器,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”開頭並且可能有一個次要版本。


更新:

為避免縮小評論,您可以使用以下內容:

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版本的內部值轉換)等屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM