检测浏览器版本


下面是检测浏览器版本的代码,其中“update-browser.html”是检测失败后的跳转页面。

<script>
(function() {
  var bw = (function detectBrowser(userAgentString) {
    var browsers = [
      [ 'edge', /Edge\/([0-9\._]+)/ ],
      [ 'chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/ ],
      [ 'firefox', /Firefox\/([0-9\.]+)(?:\s|$)/ ],
      [ 'opera', /Opera\/([0-9\.]+)(?:\s|$)/ ],
      [ 'opera', /OPR\/([0-9\.]+)(:?\s|$)$/ ],
      [ 'ie', /Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/ ],
      [ 'ie', /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/ ],
      [ 'ie', /MSIE\s(7\.0)/ ],
      [ 'bb10', /BB10;\sTouch.*Version\/([0-9\.]+)/ ],
      [ 'android', /Android\s([0-9\.]+)/ ],
      [ 'ios', /iPad.*Version\/([0-9\._]+)/ ],
      [ 'ios',  /iPhone.*Version\/([0-9\._]+)/ ],
      [ 'safari', /Version\/([0-9\._]+).*Safari/ ]
    ];
    var i = 0, mapped =[];
    for (i = 0; i < browsers.length; i++) {
      browsers[i] = createMatch(browsers[i]);
      if (isMatch(browsers[i])) {
        mapped.push(browsers[i]);
      }
    }
    var match = mapped[0];
    var parts = match && match[3].split(/[._]/).slice(0,3);
    while (parts && parts.length < 3) {
      parts.push('0');
    }
    function createMatch(pair) {
      return pair.concat(pair[1].exec(userAgentString));
    }
    function isMatch(pair) {
      return !!pair[2];
    }
    // return the name and version
    return {
      name: match && match[0],
      version: parts && parts.join('.'),
    };
  })(navigator.userAgent);
  if (bw.name=='ie' || (bw.name=='chrome' && parseInt(bw.version)<44)) {
    window.location.href = 'update-browser.html';
  }
})();
</script>

前一篇:
后一篇:

发表评论