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 18 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
Jan 15 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
JavaScript中:表达式和语句的区别[译]
Sep 17 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
JavaScript获取当前url根目录(路径)
Jun 17 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
实用jquery操作表单元素的简单代码
Jul 04 Javascript
JavaScript实现广告弹窗效果
Aug 09 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
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
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python3抓取中文网页的方法
2015/07/28 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
python删除不需要的python文件方法
2018/04/24 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python的等深分箱实例
2019/11/22 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
数据保密承诺书
2014/06/03 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android