当浏览器模式为IE9时,如何从JS检测IE10 ?

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

本文关键字:JS 检测 IE10 模式 浏览器 IE9      更新时间:2023-09-26

我需要用纯javascript(没有框架)检测浏览器何时是IE10,尽管浏览器模式设置

一些评论:-我确实需要检测浏览器,它不是一个选项来检测功能,因为目的是减轻浏览器的错误。-我尝试过常见的方法(如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之前,他们使用的数字与浏览器版本不一致,但可能从IE9开始就走上了正确的轨道。您必须看到@_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版本的内部值翻译过来的)。