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

后端 未结 1 2005
日久生厌
日久生厌 2021-01-05 22:46

I need to detect with just plain javascript (no frameworks) when the browser is IE10 despite the browser mode setting.

Some comments: - I do need to detect the brows

相关标签:
1条回答
  • 2021-01-05 23:36

    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

    To get the version, you'd use @_jscript_version. So in Javascript, I'd use:

    <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. 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).

    To see the list of JScript versions, you can see them here - 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.


    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).

    0 讨论(0)
提交回复
热议问题