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 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 11 Javascript
没有document.getElementByName方法
Aug 19 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
JavaScript获取XML数据附示例截图
Mar 05 Javascript
JavaScript函数详解
Nov 17 Javascript
node.js中的console用法总结
Dec 15 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
jQuery File Upload文件上传插件使用详解
Dec 06 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
Vue和React有哪些区别
Sep 12 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
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python下MySQLdb用法实例分析
2015/06/08 Python
使用Python绘制图表大全总结
2017/02/11 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
详解python的argpare和click模块小结
2019/03/31 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Python分类测试代码实例汇总
2020/07/23 Python
Python之字典添加元素的几种方法
2020/09/30 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
乡下人家教学反思
2014/02/01 职场文书
贷款承诺书范文
2014/05/19 职场文书
校庆活动策划方案
2014/06/05 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书