JS获取浏览器类型和版本号,增加了IE11的判断。

2015/7/5更新: 简化代码逻辑

var zbrowser = {}
var ua = navigator.userAgent.toLowerCase();

var browsers = ["msie", "firefox", "chrome", "opera", "safari", "iphone", "ipad", "android", "iemobile", "operamini"];var len = browsers.length;

var isGreaterThanIE10 = !(/msie/.test(ua)) && ua.match(/trident/);if (isGreaterThanIE10) {    for (var i = 0; i < len; i++) {        zbrowser[browsers[i]] = false;    }    zbrowser.msie = true;    zbrowser.mobile = false;} else {    for (var j = 0; j < len; j++) {        zbrowser[browsers[j]] = new RegExp(browsers[j]).test(ua);    }    zbrowser.safari = !zbrowser.chrome && /safari/.test(ua);    zbrowser.mobile = zbrowser.iphone || zbrowser.ipad || zbrowser.android || zbrowser.iemobile || zbrowser.operamini;}for (var n = 0; n < len; n++) {    if (zbrowser[browsers[i]] === true) {        zbrowser.browser = browsers[i];        break;    }}

var bv = "unknown";if (isGreaterThanIE10) {    var re = new RegExp("trident/.*rv:([0-9]{1,}[\.0-9]{0,})");    if (re.exec(ua) != null) {        bv = parseFloat(RegExp.$1);    }} else {    var m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);    if (m) {        var v = ua.match(/version\/([\.\d]+)/i);        if (v != null) {            bv = v[1];        } else {            bv = m[2];        }    }}

zbrowser.version = bv;

JS获取浏览器类型和版本号的更多相关文章

  1. js获取浏览器类型和版本信息

    bro () { let broName = 'Runing' let strStart = 0 let strStop = 0 let temp = '' let userAgent = windo ...

  2. JS推断浏览器类型与版本号

    在JS中推断浏览器的类型,预计是每一个编辑过页面的开发者都遇到过的问题.在众多的浏览器产品中.IE.Firefox.Opera.Safari........众多品牌却标准不一,因此时常须要依据不同的浏 ...

  3. js获取浏览器类型进行判断

    本文为webuploader.js中学习心得,感谢开源,从中加入了ie的edge判断 /** * @description 简单的浏览器检查结果. * * * `webkit` webkit版本号,如 ...

  4. 转:PHP获取浏览器类型及版本号

    function getBrowser(){ $agent=$_SERVER["HTTP_USER_AGENT"]; if(strpos($agent,'MSIE')!==fals ...

  5. JS检查浏览器类型和版本号

    先取得Navigator对象的userAgent属性的小写信息,之后依据正則表達式推断赋值. var Sys = {}; var ua = navigator.userAgent.toLowerCas ...

  6. jquery获取浏览器类型和版本号的方法

    $(document).ready(function(){ varbrow=$.browser; varbInfo=""; if(brow.msie){bInfo="Mi ...

  7. js获取浏览器类型

    function add(){ var userAgent = navigator.userAgent, rMsie = /(msie\s|trident.*rv:)([\w.]+)/, rFiref ...

  8. JS判断浏览器类型以及版本号

    <script type="text/javascript">        (function(){            window.nav={};       ...

  9. JS 获取浏览器和屏幕宽高等信息代码

    JS 获取浏览器和屏幕宽高等信息. 网页可见区域宽:document.body.clientWidth  网页可见区域高:document.body.clientHeight  网页可见区域宽:doc ...

随机推荐

  1. poj3061尺取法

    A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, a ...

  2. 面向对象设计(Object-Oriented Design,OOD)

    前言 OOD简介 Shubho:亲爱的,让我们开始学习OOD吧.你了解面向对象原则吗? Farhana:你是说封装,继承,多态对吗?我知道的. Shubho:好,我希望你已了解如何使用类和对象.今天我 ...

  3. [刷题]算法竞赛入门经典(第2版) 5-9/UVa1596 - Bug Hunt

    //开学了,好烦啊啊啊啊啊!怎么开个学那么多破事情!!都俩星期了,终于有时间写出来一道题 题意:不难理解,不写了.这几天忙的心累. 代码:(Accepted, 0.010s) //UVa1596 - ...

  4. nodejs弯路-01之'express' 不是内部或外部命令

    最近正想用node+angular+mongodb来完成一个小项目,三样都算是从零开始学习吧. 一开始是想用express -e projectname去创建一个ejs模板的项目.(一两句话就可以把大 ...

  5. MyBatis3入门

    这里对mybatis的入门介绍以官方最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases. 以前经常都 ...

  6. Android studio 3.0 引起的 outputFile sync failed:not vaild

    我们大多使用 android studio 改变生成安装包命名会用以下方式: applicationVariants.all { variant -> variant.outputs.each ...

  7. ListView的使用(二)长按弹出上下文菜单

    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView ...

  8. Swift 入门之简单语法(六)

    KVC 字典转模型构造函数 /// `重写`构造函数 /// /// - parameter dict: 字典 /// /// - returns: Person 对象 init(dict: [Str ...

  9. Unix文化--RTFM

    背景 从上个世纪70年代初unix被创建后的不久,它变得越来越流行起来,从最初的贝尔实验室,到后来的许多大学的计算机院系.这意味着越来越多的人需要学习如何使用unix. 可以预期的是,贝尔实验室的人都 ...

  10. 那些年我遇到的ERP顾问

    当我写下这篇随笔的时候,算起来在我从业9年的时间里,也差不多遇到了4-5拨的ERP咨询顾问,严格来说是4家ERP顾问公司.分别是:IBM.汉得.鼎捷以及盈通金服.从实施水准.技术力量.沟通技巧.做事态 ...