简体   繁体   English

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

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

I need to detect with just plain javascript (no frameworks) when the browser is IE10 despite the browser mode setting. 尽管浏览器模式设置,但是当浏览器是IE10时,我需要使用简单的javascript(无框架)进行检测。

Some comments: - I do need to detect the browser, it isn't an option to detect just features since the purpose is mitigating a browser bug. 一些评论: - 我确实需要检测浏览器,它不是检测功能的选项,因为目的是减轻浏览器错误。 - I have tried the common ways (like UA string or feature detection) with no success, when I switch browser mode to IE9 every aspect that could suggest being in IE10 just vanishes. - 我尝试了常见的方式(比如UA字符串或功能检测)没有成功,当我将浏览器模式切换到IE9时,每个可能暗示在IE10中的方面都消失了。

If you want to detect the browser you're working with, IE has a special feature, called conditional compilation - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml 如果你想检测你正在使用的浏览器,IE有一个特殊的功能,称为条件编译 - http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

To get the version, you'd use @_jscript_version . 要获得该版本,您需要使用@_jscript_version So in Javascript, I'd use: 所以在Javascript中,我会使用:

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

I don't have IE10, but when testing with IE9, it seems to work. 我没有IE10,但在使用IE9进行测试时,似乎可行。 If I change the browser mode to 7 or 8, @_jscript_version has the true browser JScript version (it stays as 9 in my case). 如果我将浏览器模式更改为7或8,则@_jscript_version具有真正的浏览器JScript版本(在我的情况下它保持为9 )。

To see the list of JScript versions, you can see them here - http://en.wikipedia.org/wiki/JScript#Versions . 要查看JScript版本列表,您可以在此处查看它们 - http://en.wikipedia.org/wiki/JScript#Versions It doesn't list IE10, but I'd assume it's 10. Before IE9, they used numbers inconsistent with the browser version, but are possibly on the right track since 9. You'll have to see what @_jscript_version is by default for 10, but I'd assume it starts with "10" and has a minor version possibly. 它没有列出IE10,但我认为它是10.在IE9之前,他们使用与浏览器版本不一致的数字,但是可能在9之后的正确轨道上。你必须看看默认的@_jscript_version是什么10,但我认为它以“10”开头并且可能有一个次要版本。


UPDATE: 更新:

To avoid minification of comments, you can use something like: 为避免缩小评论,您可以使用以下内容:

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

And access the properties like IE.isTheBrowser and IE.actualVersion (which is translated from internal values of JScript versions). 并访问IE.isTheBrowserIE.actualVersion (从JScript版本的内部值转换)等属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM