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. linux系统资源限制

    概述 拜读了小Y对ora-7445问题的解读,猛然惊醒发现自己对oracle运行在linux上的资源限制一直是朦朦胧胧的,以此文章督促自己深入了解. 1 limits.conf 和sysctl.con ...

  2. Python登录页面及

    写一段代码的流程,先用中文写出流程 #解释器 #编码 #登录,三次登录失败,锁定账户 #文件里保存用户信息 用户名|密码|登录次数 用户名|密码|登录次数 读取内容,r: 文件内容读进内存,read( ...

  3. LeetCode4. Median of Two Sorted Arrays---vector实现O(log(m+n)--- findkth

    这道题目和PAT上的1029是同一题.但是PAT1029用O(m+n)的时间复杂度(题解)就可以,这道题要求是O(log(m+n)). 这道题花费了我一个工作日的时间来思考.因为是log因而一直思考如 ...

  4. robotframe 学习笔记(之一)

    在robot framework中,通过 Set variable关键字来定义变量 连接对象: 通过Catenate关键字可以连接多个信息 加上"SEPARATOR=",可以对多个 ...

  5. 栅栏——CyclicBarrier

    栅栏CyclicBarrier和闭锁CountDownLatch类似,可以说它们都是用来计数,都能阻塞一组线程知道某个事件发生.不同的是闭锁用于等待事件,而栅栏用于等待其他线程. 在前一篇<Co ...

  6. C#基础知识-编程思想之封装(七)

    既然是学习面向对象的编程那自然要了解面向对象中的三大基石,封装.继承和多态. 我觉得要解释这三大基本概念用一篇文档很难解释清楚,想要具体形象的去了解,还是需要每一个概念用一个篇幅来说明,将封装.继承和 ...

  7. 第 8 章 MySQL 数据库 Query 的优化

      前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 Query 语句的优化进行相应的分析. ...

  8. CentOS7下配置网络yum源(附带下载地址)

    一.查看外网是否通畅 配置网络yum源(需要保证外网开通,我这里是使用网易163提供开源镜像站) 二.下载repo文件 cd /etc/yum.repos.dwget http://mirrors.1 ...

  9. MySQL开放远程登录

    在服务器上部署MYSQL每次观看MYSQL记录或者修改的时候都需要登录服务器,又烦又占资源.所以使用另一种方法:对外开放接口. 注:如果某些服务器开启防火墙屏蔽了某些接口就有可能导致远程用户无法登录M ...

  10. 移动端使用rem同时适应安卓ios手机原理解析,移动端响应式开发

    rem单位大家可能已经很熟悉,rem是随着html的字体大小来显示代表宽度的方法,我们怎样进行移动端响应式开发呢 浏览器默认的字体大小为16px 及1rem 等于 16px 如果我们想要使1rem等于 ...