检测浏览器版本类型的JavaScript代码,终极版
下面的JavaScript代码,不仅可以判断PC端浏览器类型,还可以判断安卓、iOS、其他智能手机、平板电脑或游戏系统。
说废话貌似不是我的风格哈,直接上代码吧:
var client = function(){ //呈现引擎 var engine ={ ie : 0, gecko : 0, webkit : 0, khtml : 0, opera : 0, ver : null }; //浏览器 var browser = { ie : 0, firefox :0, safari : 0, konq :0, opera : 0, chrome : 0, ver : null }; var system ={ win :false, max : false, x11 : false, //移动设备 iphone : false , ipod : false, ipad : false, ios : false, android : false, nokiaN : false, winMoble : false, //游戏系统 wii :false, ps : false }; var ua =navigator.userAgent; //Opera 9以后出现了两种字符串代理的方式 一种方式就是将自身标识另外一个浏览器 另外一种方式就是标志自己为firefox或者IE //在后面这种情况下 用户代理字符串实际上与其他浏览器返回的相同--既没有opera的字样,也不包含opera的版本信息 //因此判断浏览器先从opera开始 if(winddow.opera){ engine.ver = browser.ver = window.opera.version(); egine.opera = browser.opera = parseFloat(engine.ver); //第二个检测WebKit 是因为WebKit的用户代理字Gecko"和"HTMKL"的字符串 所以如果首先检测他们都有错误的结论 }else if (/AppleWebKit\/(\S+)/.test(ua)){ engin.ver = RegExp["$1"]; engine.webkit = parseFloat(engine.ver); //确定是chrome还是Safari if(/Chrome\/(\S+)/.test(ua){ browser.ver = RegExp["$1"]; browser.chrome = parseFloat(brower.ver); }else if(/Version\/(+\S)/.test(ua)){//safari 3.0后增加了Version属性 browser.ver = RegExp["$1"]; browser.safari = parseFloat(brower.ver); }else{ var safariVersion = 1; if(engine.webkit<100){ safariVersion = 1; }else if(engine.ver<312){ safariVersion = 1.2; }else if(engine.ver<412){ safariVersion = 1.3; }else{ safariVersion = 2; } browser.safari = browser.ver = safariVersion; } }else if(/KHTML\/(\S+)/.test(ua)||/Konqueror\/([^;]+)/.test(ua)){//Linux下浏览器 engine.ver = browser.ver = RegExp["$1"]; engine.khtml = parseFloat(engine.ver); }else if(/rv:([^\)]+\) Gocko\/\d{8}/.test(ua)){ engine.ver = RegExp["$1"]; engine.gecko = parseFloat(engine.ver); //确定不是firefox if(/Firefox\/(\S+)/.test(ua){ browser.ver = RegExp["$1"]; browser.firefox = parseFloat(browser.ver); } }else if (/MSIE ([^;]+)/.test(ua)){ engine.ver = browser.ver = RegExp["$1"]; engine.ie = browser.ie = parseFloat(engine.ver); } //检测浏览器 browser.ie =engine.ie; browser.opera = engine.opera; var p = navigator.platform; system.win = p.indexOf("Win")==0; system.mac = p.indexOf("Mac")==0; system.x11 = (p=="x11")||p.indexOf("Linux")==0; if(system.win){ if(/Win(?:dow)?([^do]{2}\s?(\d+\.\d+)?/.test(ua)){ if(RegExp["$1"]=="NT"){ switch(RegExp["$2"]){ case "5.0" : system.win = "2000"; break; case "5.1" : system.win = "xp"; case "6.0" : system.win = "Vista"; break; case "6.1" : system.win = "7"; break; default : system.win ="NT"; break; } }else if(RegExp["$1"]=="9x"){ system.win = "ME"; }else{ system.win = RegExp["$1"]; } } } //移动设备 system.iphone = ua.indexOf("iPhone")>-1; system.ipod = ua.indexOf("iPod")>-1; system.ipad = ua.indexOf("iPad")>-1; system.nokiaN = ua.indexOf("nokiaN")>-1; //win Mobile if(system.win == "CE"){ system.winMobile = system.win; }else if(system.win = "Ph"){ if(/Windows Phone OS (\d+\_\d+)/.test(ua)){ system.win = "Phone"; system.winMobile parseFloat(RegExp["$1"]); } } //检测ios版本 // if(system.mac && ua.indexOf("Mobile")>-1){ if(/CPU (?:iPhone)?OS (\d+\_\d+)/.test(ua){ system.ios = parseFloat(RexExp.$1.replace("_",".")); }else { system.ios = 2 ;//不能真正检查出来,所以猜测出来一个结果 } } //检查安卓版本 // if(/Android (\d+/_\d+)/.test(ua)){ system.andriod = parseFloat(RegExp.$1); } //游戏系统 system.wii = us.indexOf("Wii")>-1; system.ps = /playstation/i.test(ua); //返回对象 return { engine : engine, browser : browser, system : system } }
当然,你也可以自己构造正则表达式,匹配us对象,判断其他的类型哦~
呵呵,撸走代码不要忘了点赞哦~(*^_^*)
检测浏览器版本类型的JavaScript代码,终极版的更多相关文章
- javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)
这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放).检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供java ...
- ASP.NET MVC中检测浏览器版本并提示下载更新
如果网站使用html5.css3.自适应等新特性,可能有些浏览器版本不支持.这时候,需要提醒浏览者更新浏览器的版本到最新. 本篇用到的插件为:http://jreject.turnwheel.com/ ...
- js检测浏览器版本代码,兼容ie11
原文:http://blog.csdn.net/tenkin/article/details/11640165 <script type="text/javascript"& ...
- jquery检测浏览器版本
//检测当前浏览器 function browserType() { var brow = $.browser; //console.log(brow); var bInfo = "&quo ...
- JS检测浏览器版本信息(包含IE11),并动态添加样式
<head runat="server"> <meta http-equiv="Content-Type" content="tex ...
- jquery检测浏览器类型
使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...
- 使用JavaScript检测浏览器
假设你真的需要检测浏览器的类型,使用JavaScript非常easy达到. View Demo Download Source from GitHub JavaScript有一个navigator的标 ...
- javascript——处理(获取)浏览器版本、操作系统
javascript——处理(获取)浏览器版本.操作系统 /** * Created by Administrator on 15-1-12. */ function BroswerUtil() { ...
- 浏览器地址栏运行JavaScript代码
这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开头后跟要执行的语句.比如: javascript:alert('hello from ad ...
随机推荐
- 了解webpack
学习笔记 一步步了解webpack 前言 demo 地址: https://github.com/yy8597/webpack-demos 之前学习了 broswerify,发现确实很好用.虽然没 ...
- Ubuntu文件的复制、移动和删除命令
先说说cp复制命令 该命令的功能是将给出的文件或文件夹复制到还有一文件或文件夹中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或文件夹 目标文件或文件夹 说明:该命 ...
- Timer Swing
一个Swing的例子,按钮控件上中文出现乱码: 试了网上的设置Font,或将汉字使用new String(str.getBytes(),"GBK")对展示的汉字进行编码.都无效. ...
- HOWTO: 为GitHub for Windows指定代理服务器(转)
If the command line way of configuring your proxy server doesn't work, you can probably just edit .g ...
- Webx相框:RequestContext详细说明
RequestContext RequestContext它可以被看作是request和response飞度.多于RequestContext还可以串起来.喜欢Filter像链条. 每个外Reques ...
- 十天学Linux内核之第六天---调度和内核同步
原文:十天学Linux内核之第六天---调度和内核同步 心情大好,昨晚我们实验室老大和我们聊了好久,作为已经在实验室待了快两年的大三工科男来说,老师让我们不要成为那种技术狗,代码工,说多了都是泪啊,, ...
- ANDROID定义自己的看法——onMeasure,MeasureSpec源代码 过程 思考具体解释
一个简短的引论: 在他们的定义view什么时候,其实很easy,只需要知道3: 1.測量--onMeasure():决定View的大小 2.布局--onLayout():决定View在ViewGrou ...
- 查询记录rs.previous()使用
查询记录rs.previous()使用 假如查询一个数据表,假设没有记录就显示提示信息.有就所有显示出来查询结果.这时假设是有查询结果的话就须要进行两次查询.第一次查完记录指针指向最后一条记录.開始第 ...
- ftp设置(2015-04-04)[转]
anonymous_enable=YES /允许匿名访问 12行local_enable=YES /允许本地用户访问(/etc/passwd中的用户) 15行write_enable=YES /允许写 ...
- crm使用soap删除实体
//C# 代码: //DeleteEntityRequest request = new DeleteEntityRequest(); //request.LogicalName = "ne ...