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 相关文章推荐
lyhucSelect基于Jquery的Select数据联动插件
Mar 29 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
js中for in的用法示例解析
Dec 25 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
vue实现节点增删改功能
Sep 26 Javascript
JS实现网页时钟特效
Mar 25 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
python实现用户登录系统
2016/05/21 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
python实现人机五子棋
2020/03/25 Python
什么是Python包的循环导入
2020/09/08 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
党员目标管理责任书
2014/07/25 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
MySql分区类型及创建分区的方法
2022/04/13 MySQL
JS函数式编程实现XDM一
2022/06/16 Javascript