Identify IE9/IE10 using jQuery

后端 未结 5 1914
庸人自扰
庸人自扰 2020-12-18 09:22

I have a jQuery code which is working fine for Chrome/Mozilla but not IE.

if ($(\"html\").hasClass(\"ie\")) {
    $(function(){
        $(\'.green-column, .         


        
相关标签:
5条回答
  • 2020-12-18 10:01

    Just do like this

    if ($.browser.msie  && parseInt($.browser.version, 10) > 8) {
      alert('IE9 or IE10'); 
    } else {
      alert('Non IE9 or IE10');
    }
    

    This should work for jQuery version under 1.9. If you use 1.9+, read this thread or consider using modernizr.

    0 讨论(0)
  • 2020-12-18 10:02

    Can be achieved without using libraries or conditional compilation:

    if (document.addEventListener) {
        alert("IE9 or greater");
    }
    
    if (window.requestAnimationFrame) {
        alert("IE10 or greater");
    }
    
    0 讨论(0)
  • 2020-12-18 10:05

    I know this is an old question. but in case you haven’t found an answer.

    Show a message if the browser is not internet explorer 9 or greater

    browser={};
    if (/(chrome\/[0-9]{2})/i.test(navigator.userAgent)) {
        browser.agent = navigator.userAgent.match(/(chrome\/[0-9]{2})/i)[0].split("/")[0];
        browser.version  = parseInt(navigator.userAgent.match(/(chrome\/[0-9]{2})/i)[0].split("/")[1]);
    } else if (/(firefox\/[0-9]{2})/i.test(navigator.userAgent)) {
        browser.agent = navigator.userAgent.match(/(firefox\/[0-9]{2})/i)[0].split("/")[0];
        browser.version  = parseInt(navigator.userAgent.match(/(firefox\/[0-9]{2})/i)[0].split("/")[1]);
    } else if (/(MSIE\ [0-9]{1})/i.test(navigator.userAgent)) {
        browser.agent = navigator.userAgent.match(/(MSIE\ [0-9]{1})/i)[0].split(" ")[0];
        browser.version  = parseInt(navigator.userAgent.match(/(MSIE\ [0-9]{1})/i)[0].split(" ")[1]);
    } else if (/(Opera\/[0-9]{1})/i.test(navigator.userAgent)) {
        browser.agent = navigator.userAgent.match(/(Opera\/[0-9]{1})/i)[0].split("/")[0];
        browser.version  = parseInt(navigator.userAgent.match(/(Opera\/[0-9]{1})/i)[0].split("/")[1]);
    } else if (/(Trident\/[7]{1})/i.test(navigator.userAgent)) {
        browser.agent = "MSIE";
        browser.version  = 11;
    } else {
        browser.agent = false;
        browser.version  = false;
    }
    
    if (/(Windows\ NT\ [0-9]{1}\.[0-9]{1})/.test(navigator.userAgent)) {
        browser.os = "Windows";
        switch(parseFloat(navigator.userAgent.match(/(Windows\ NT\ [0-9]{1}\.[0-9]{1})/)[0].split(" ")[2])) {
        case 6.0:
            browser.osversion = "Vista";
            break;
        case 6.1:
            browser.osversion = "7";
            break;
        case 6.2:
            browser.osversion = "8";
            break;
        default:
            browser.osversion = false;
        }
    } else if (/(OS\ X\ [0-9]{2}\.[0-9]{1})/.test(navigator.userAgent)) {
        browser.os = "OS X";
        browser.osversion = navigator.userAgent.match(/(OS\ X\ [0-9]{2}\.[0-9]{1})/)[0].split(" ")[2];
    } else if (/(Linux)/.test(navigator.userAgent)) {
        browser.os = "Linux";
        browser.osversion = false;
    }
    
    0 讨论(0)
  • 2020-12-18 10:07

    Older jQuery versions before 1.9 offered $.browser to get this. Now jQuery wants you to check for functions instead via $.support.

    A pretty good alternative is modernizr (http://modernizr.com/). Modernizr adds classes to your root element like msie or ie9 or webkit or touch and so on.

    So you can easily check:

    if ($('html').hasClass('ie9')) {
        // do something
    } 
    
    0 讨论(0)
  • 2020-12-18 10:11

    The only reliable way to detect the currently active IE version (possibly emulated) is to combine conditional compilation and a document.documentMode check.

    Conditional compilation is optional, but it allows you to never run the IE-detection script for non-IE browsers.

    For example:

    if (/*@cc_on !@*/false && (
           document.documentMode === 9 || document.documentMode === 10)
       ) {
        // IE 9 or 10 (not 8 or 11!)
        document.documentElement.className += ' ie9 ie10';
    }
    

    The previous code is not safe against minifiers. If you're going to minify your code, put the conditional compilation stuff in a string, and eval it:

    if (eval('/*@cc_on !@*/false') && ( ... )) { ... }
    
    0 讨论(0)
提交回复
热议问题