js判断浏览器版本以及浏览器内核的方法


Posted in Javascript onJanuary 20, 2015

本文实例讲述了js判断浏览器版本以及浏览器内核的方法。分享给大家供大家参考。具体实现方法如下:

js判断是否移动端及浏览器内核

var browser = {
  versions: function() {
    var u = navigator.userAgent;
    return {
			trident: u.indexOf('Trident') > -1, //IE内核
			presto: u.indexOf('Presto') > -1, //opera内核
			webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
			gecko: u.indexOf('Firefox') > -1, //火狐内核Gecko
			mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
			ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios
			android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android
			iPhone: u.indexOf('iPhone') > -1 , //iPhone
			iPad: u.indexOf('iPad') > -1, //iPad
			webApp: u.indexOf('Safari') > -1 //Safari
		};
	}()
}

if (browser.versions.mobile || browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad) {
	alert('移动端');
}

代码二

document.write(navigator.userAgent+'<br><br>')
document.write(browser.versions.trident+'<span>//ie</span> <br>')
document.write(browser.versions.presto+'<span>//opera</span> <br>')
document.write(browser.versions.webKit+'<span>//苹果、谷歌内核</span> <br>')
document.write(browser.versions.gecko+'<span>//火狐内核</span> <br>')
document.write(browser.versions.mobile+'<span>//是否为移动终端</span> <br>')
document.write(browser.versions.ios+'<span>//ios</span> <br>')
document.write(browser.versions.android+'<span>//android</span> <br>')
document.write(browser.versions.iPhone+'<span>//iPhone</span> <br>')
document.write(browser.versions.iPad+'<span>//iPad</span> <br>')
document.write(browser.versions.webApp+'<span>//Safari</span> <br>')
if (!browser.ie && !browser.mac) { 
 var UA = navigator.userAgent.toLowerCase().toString(); 
  //判断是不是IE内核下的非IE版本 
  if ((UA.indexOf('360ee') > -1) || (UA.indexOf('360se') > -1) || (UA.indexOf('se') > -1) || (UA.indexOf('aoyou') > -1) 
 || (UA.indexOf('theworld') > -1) || (UA.indexOf('worldchrome') > -1) || (UA.indexOf('greenbrowser') > -1) 
 || (UA.indexOf('baidu') > -1) || (UA.indexOf('qqbrowser') > -1)) { 
     //是的话切换兼容模式 
  window.open("publicPage/point-se.aspx"); 
    } 
   else { 
       //不是的话,建议更换浏览器 
      alert('建议换成IE内核的浏览器'); 
    } 
  } 
 else { 
      //判断IE的版本型号 
      if ( (browser.version == 10 && browser.ie10Compat) || (browser.version == 11 && browser.ie11Compat)) { 
        window.open("publicPage/point.aspx"); 
      } 
/* 
 * @desc  判断浏览器的版本以及浏览器内核 
 * @author wangyanling 
 * @date  2014年7月4日 
 */ 
 var browser = function () {  
  var agent = navigator.userAgent.toLowerCase(), 
  opera = window.opera, 
  browser = { 
    //检测当前浏览器是否为IE 
    ie: /(msie\s|trident.*rv:)([\w.]+)/.test(agent), 

    //检测当前浏览器是否为Opera 
    opera: (!!opera && opera.version), 

    //检测当前浏览器是否是webkit内核的浏览器 
    webkit: (agent.indexOf(' applewebkit/') > -1), 

    //检测当前浏览器是否是运行在mac平台下 
    mac: (agent.indexOf('macintosh') > -1), 

    //检测当前浏览器是否处于“怪异模式”下 
    quirks: (document.compatMode == 'BackCompat') 
  }; 

  //检测当前浏览器内核是否是gecko内核 
  browser.gecko = (navigator.product == 'Gecko' && !browser.webkit && !browser.opera && !browser.ie); 

  var version = 0; 

  // Internet Explorer 6.0+ 
  if (browser.ie) { 
    var v1 = agent.match(/(?:msie\s([\w.]+))/); 
    var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); 
    if (v1 && v2 && v1[1] && v2[1]) { 
      version = Math.max(v1[1] * 1, v2[1] * 1); 
    } else if (v1 && v1[1]) { 
      version = v1[1] * 1; 
    } else if (v2 && v2[1]) { 
      version = v2[1] * 1; 
    } else { 
      version = 0; 
    } 

    //检测浏览器模式是否为 IE11 兼容模式 
    browser.ie11Compat = document.documentMode == 11; 

    //检测浏览器模式是否为 IE9 兼容模式 
    browser.ie9Compat = document.documentMode == 9; 

    //检测浏览器模式是否为 IE10 兼容模式 
    browser.ie10Compat = document.documentMode == 10; 

    //检测浏览器是否是IE8浏览器 
    browser.ie8 = !!document.documentMode; 

    //检测浏览器模式是否为 IE8 兼容模式 
    browser.ie8Compat = document.documentMode == 8; 

    //检测浏览器模式是否为 IE7 兼容模式 
    browser.ie7Compat = ((version == 7 && !document.documentMode) || document.documentMode == 7); 

    //检测浏览器模式是否为 IE6 模式 或者怪异模式 
    browser.ie6Compat = (version < 7 || browser.quirks); 

    browser.ie9above = version > 8; 

    browser.ie9below = version < 9; 
  } 

  // Gecko. 
  if (browser.gecko) { 
    var geckoRelease = agent.match(/rv:([\d\.]+)/); 
    if (geckoRelease) { 
      geckoRelease = geckoRelease[1].split('.'); 
      version = geckoRelease[0] * 10000 + (geckoRelease[1] || 0) * 100 + (geckoRelease[2] || 0) * 1; 
    } 
  } 

  //检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号 
  if (/chrome\/(\d+\.\d)/i.test(agent)) { 
    browser.chrome = +RegExp['\x241']; 
  } 

  //检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号 
  if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)) { 
    browser.safari = +(RegExp['\x241'] || RegExp['\x242']); 
  } 

  // Opera 9.50+ 
  if (browser.opera) 
    version = parseFloat(opera.version()); 

  // WebKit 522+ (Safari 3+) 
  if (browser.webkit) 
    version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]); 

  //检测当前浏览器版本号 
  browser.version = version; 

  return browser; 
}();

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 Javascript
超精准的javascript验证身份证号的具体实现方法
Nov 18 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
vue实现表格数据的增删改查
Jul 10 Javascript
详解Vue2.x-directive的学习笔记
Jul 17 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
js实现多张图片每隔一秒切换一张图片
Jul 29 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 Javascript
js实现的捐赠管理完整实例
Jan 20 #Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 #Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 #Javascript
DOM基础教程之使用DOM + Css
Jan 20 #Javascript
jquery+ajax实现跨域请求的方法
Jan 20 #Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 #Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 #Javascript
You might like
Ajax PHP分页演示
2007/01/02 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
js如何编写简单的ajax方法库
2017/08/02 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python实现的桶排序算法示例
2017/11/29 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
行政部主管岗位职责
2013/12/28 职场文书
便利店投资创业计划书
2014/02/08 职场文书
标准版离职证明书
2014/09/12 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Python绘制分类图的方法
2021/04/20 Python