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

 更新时间:2015年01月20日 15:09:27   投稿:shichen2014  
这篇文章主要介绍了js判断浏览器版本以及浏览器内核的方法,可实现针对各个浏览器的判断,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 原生JS实现HTML转Markdown功能

    原生JS实现HTML转Markdown功能

    这篇文章主要为大家详细介绍了如何使用原生JS实现简单的HTML转Markdown功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Jquery代码实现图片轮播效果(一)

    Jquery代码实现图片轮播效果(一)

    经理交给我一个网站新闻资讯网页开发的活儿,对于我这样的java程序员,没有接触过网页设计这么高端的东东,该怎么搞呢,去度娘那搜索到不少结果,而且很大部分都是用jquery做的,于是根据自己的一些的理解,提供了这篇jquery轮播效果的讲解,有需要的朋友可以来参考下
    2015-08-08
  • javaScript年份下拉列表框内容为当前年份及前后50年

    javaScript年份下拉列表框内容为当前年份及前后50年

    本文介绍的这个javaScript年份下拉列表框内容为当前年份及前后50年,默认显示当前年份,大家可以学习下
    2014-05-05
  • 使用SVG基本操作API的实例讲解

    使用SVG基本操作API的实例讲解

    下面小编就为大家带来一篇使用SVG基本操作API的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 再谈javascript图片预加载技术(详细演示)

    再谈javascript图片预加载技术(详细演示)

    由于javascript无法获取img文件头数据,必须等待其加载完毕后才能获取真实的大小,所以lightbox类效果为了让图片居中显示,导致其速度体验要比直接输出的差很多。
    2011-03-03
  • js中的preventDefault与stopPropagation详解

    js中的preventDefault与stopPropagation详解

    本篇文章主要是对js中的preventDefault与stopPropagation进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 在JavaScript 中按字母排序之如何在 JS 中按名称排序

    在JavaScript 中按字母排序之如何在 JS 中按名称排序

    有时你可能有一个单词数组,你想按字母顺序(从 a-z)对每个单词进行排序,或者你可能有一个包含用户信息(包括名字)的对象数组,例如,你想按照用户的名字来排序,接下来通过本文给大家介绍在JavaScript 中按字母排序之如何在 JS 中按名称排序,需要的朋友可以参考下
    2023-09-09
  • JavaScript 数组基本操作全解

    JavaScript 数组基本操作全解

    今天这篇文章就是来和大家详细聊聊JavaScript中数组的基本操作,很多语言都是在数组这有个分水岭。听懂了接下来就很容易,听不懂就难办了,大家要认真看哟。希望大家读完有所收获,那我辛苦码字也就值了
    2022-02-02
  • js获取dom元素宽高的几种方法

    js获取dom元素宽高的几种方法

    这篇文章主要给大家介绍了关于js获取dom元素宽高的几种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • 使用JS进行目录上传(相当于批量上传)

    使用JS进行目录上传(相当于批量上传)

    脚本使用了WScript.Shell和Scripting.FileSystemObject的组件,所以必须要在IE下面和打开安全选项中运行; 另外还用到了Jquery. 代码只是客户端代码, 至于服务器的接收代码网上好多了
    2010-12-12

最新评论