jQuery检测浏览器IE9及以下版本并抛出一个模式进行升级

Joh*_*ohn 10 html javascript css jquery internet-explorer

我希望能够使用jQuery检测IE9或更少(或者如果有更好的方法?).如果浏览器版本是IE9或更低,那么我想加载一个模式,可以选择升级到Chrome,FF等.

我已经读过$ .browser不再工作了,所以只是想知道实现我想要的最好方法是什么:

$(document).ready(function(){

   /* Get browser */
   $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());

   /* Detect Chrome */
   if($.browser.chrome){
      /* Do something for Chrome at this point */
      alert("You are using Chrome!");

      /* Finally, if it is Chrome then jQuery thinks it's 
       Safari so we have to tell it isn't */
       $.browser.safari = false;
  }

  /* Detect Safari */
  if($.browser.safari){
      /* Do something for Safari */
      alert("You are using Safari!");
  }

});
Run Code Online (Sandbox Code Playgroud)

Sam*_*nes 16

var browser = {
        isIe: function () {
            return navigator.appVersion.indexOf("MSIE") != -1;
        },
        navigator: navigator.appVersion,
        getVersion: function() {
            var version = 999; // we assume a sane browser
            if (navigator.appVersion.indexOf("MSIE") != -1)
                // bah, IE again, lets downgrade version number
                version = parseFloat(navigator.appVersion.split("MSIE")[1]);
            return version;
        }
    };

if (browser.isIe() && browser.getVersion() <= 9) {

    console.log("You are currently using Internet Explorer" + browser.getVersion() + " or are viewing the site in Compatibility View, please upgrade for a better user experience.")
}
Run Code Online (Sandbox Code Playgroud)

  • 注意IE 11不再包含`MSIE`. (3认同)

Rup*_*ott 11

不要使用jQuery来检测IE版本.请改用条件注释.

为什么?好吧,想想你为什么要首先瞄准这些旧版本.这可能是因为它们不支持您需要的某些JS/CSS功能.那么你真的想要维护自己的JS代码,你肯定会在这些旧版本中运行吗?如果你走这条路,那么你需要开始考虑你编写的检测代码是否可以在IE6或5或4中运行......很痛苦!

而是尝试以下方法:

  1. 将您的模态/横幅元素添加到HTML中.
  2. 在主css文件中,使用display:none隐藏此元素.这可确保最新版本的IE和非IE浏览器不会看到它.
  3. 创建一个仅显示此元素的IE css或js文件.
  4. 将此文件包含在针对所需IE版本的条件注释中.

下面的示例使用CSS进行简单的显示,但如果您愿意,可以使用JS轻松替换它.只是不要让它太复杂,否则它可能很容易在IE早期版本中破解.

#index.html
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="main.css">
    <!--[if lte IE 9]>
      <link rel="stylesheet" type="text/css" href="ie-only.css">
    <![endif]-->
  </head>
  <body>
    <div class="ie-only">Go upgrade your browser!</div>
  </body>
</html>

#main.css
.ie-only { display: none }

#ie-only.css
.ie-only { display: block }
Run Code Online (Sandbox Code Playgroud)

这是一个有用的条件注释引用.