小编典典

在JavaScript中检测IE版本(v9之前的版本)

javascript

如果他们使用的是Internet Explorerv9之前的版本,我想将我们网站的用户退回至错误页面。只是不值得我们花费时间和金钱来支持IE pre-v9。使用其他所有非IE浏览器的用户都可以使用,不应被退回。这是建议的代码:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}

这段代码会成功吗?

首先,我将发表一些评论:

  1. 是的,我知道用户可以伪造useragent字符串。我不担心
  2. 是的,我知道编程专家更喜欢嗅探功能支持而不是浏览器类型,但在这种情况下,我认为这种方法不可行。我已经知道所有(相关)非IE浏览器都支持我需要的功能,而所有pre-v9 IE浏览器都不支持。在整个站点中逐个功能地检查将是浪费。
  3. 是的,我知道有人尝试使用IE v1(或> = 20)访问该网站不会将’badBrowser’设置为true,并且警告页面将无法正确显示。这是我们愿意承担的风险。
  4. 是的,我知道Microsoft具有可用于精确浏览器版本检测的“条件注释”。从IE开始,IE不再支持条件注释IE 10,从而使该方法绝对无用。

还有其他明显的问题要注意吗?


阅读 373

收藏
2020-04-25

共1个答案

小编典典

这是我的首选方式。它提供了最大的控制。(注意:仅IE5-9支持条件语句。)

首先正确设置您的ie类

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>    <html class="lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>    <html class="lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->    
<head>

然后,您可以仅使用CSS来创建样式异常,或者,如果需要,可以添加一些简单的JavaScript:

(function ($) {
    "use strict";

    // Detecting IE
    var oldIE;
    if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
        oldIE = true;
    }

    if (oldIE) {
        // Here's your JS for IE..
    } else {
        // ..And here's the full-fat code for everyone else
    }

}(jQuery));
2020-04-25