繁体   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