基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统


Posted in Javascript onDecember 03, 2015

废话不多说了,直接给大家贴js代码了,代码附有注释,感兴趣的朋友一起学习吧。

/**
 * Author: laixiangran.
 * Created by laixiangran on 2015/12/02.
 * 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
 * ********************************************************************
 * 各版本浏览器在windows10.0下的用户代理字符串:
 * Google Chrome 45.0.2454.85 —— "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36"
 * Opera 31.0.1889.174 —— "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36 OPR/31.0.1889.174"
 * Microsoft Edge —— "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
 * Firefox 40.0.3 —— "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
 * Internet Explorer 11+ —— "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko"
 * Internet Explorer 10- —— "Mozilla/5.0 (compatible; MSIE x.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
 */
(function(){
 window.iClient = {};
 //呈现引擎信息
 var engine = {
 //呈现引擎
 ie: 0,
 gecko: 0,
 webkit: 0,
 khtml: 0,
 opera:0,
 //具体版本号
 ver: null
 };
 var browser = {
 //浏览器
 ie: 0,
 edge: 0,
 firefox: 0,
 safari: 0,
 konq: 0,
 opera: 0,
 chrome: 0,
 //具体版本号
 ver: null
 };
 //平台、设备和操作系统
 var system = {
 win: false,
 mac: false,
 unix: false,
 //移动设备
 iphone: false,
 ipod: false,
 ipad: false,
 ios: false,
 android: false,
 nokiaN: false,
 winMobile: false,
 //游戏系统
 wii: false, //任天堂
 ps: false //Playstation3
 };
 //获取浏览器的用户代理字符串
 var ua = window.navigator.userAgent;
 //检测呈现引擎和浏览器
 //检测Presto内核的Opera浏览器
 if(window.opera){
 engine.ver = browser.ver = window.opera.version();
 engine.opera = browser.opera = parseFloat(engine.ver);
 }
 //检测WebKit 用代理字符串中的"AppleWebKit"进行检测
 else if(/AppleWebKit\/(\S+)/.test(ua)){
 engine.ver = RegExp["$1"];
 engine.webkit = parseFloat(engine.ver);
 //确定Microsoft Edge
 if(/Edge\/(\S+)/.test(ua)){
  browser.ver = RegExp["$1"];
  browser.edge = parseFloat(browser.ver);
 }
 //确定WebKit内核Opera
 else if(/OPR\/(\S+)/.test(ua)){
  browser.ver = RegExp["$1"];
  browser.opera = parseFloat(browser.ver);
 }
 //确定Chrome
 else if(/Chrome\/(\S+)/.test(ua)){
  browser.ver = RegExp["$1"];
  browser.chrome = parseFloat(browser.ver);
 }
 //确定Safari
 else if(/Version\/(\S+)/.test(ua)){
  browser.ver = RegExp["$1"];
  browser.safari = parseFloat(browser.ver);
 }else{
  //近似的确定版本号
  var safariVersion = 1;
  if(engine.webkit < 100){
  safariVersion = 1;
  }else if(engine.webkit <312){
  safariVersion = 1.2;
  }else if(engine.webkit < 412){
  safariVersion = 1.3;
  }else{
  safariVersion = 2;
  }
  browser.ver = browser.safari = safariVersion;
 }
 }
 //检测KHTML 用于Konqueror3.1及更早版本中不包含KHTML的版本,故而就要使用Konqueror的版本来代替
 else if(/KHTML\/(\S+)/.test(ua) || /Konqueror\/(\S+)/.test(ua)){
 engine.ver = browser.ver = RegExp["$1"];
 engine.khtml = browser.konq = parseFloat(engine.ver);s
 }
 //检测Gecko 其版本号在字符串"rv:"的后面
 else if(/rv:([^\)]+)\) Gecko\/\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);
 }
 }
 //检测IE
 else if(/MSIE ([^;]+)/.test(ua) || /rv:([^\)]+)\) like Gecko/.test(ua)){
 engine.ver = browser.ver = RegExp["$1"];
 engine.ie = browser.ie = parseFloat(engine.ver);
 }
 //获取平台或者操作系统信息,可能的值:win32、win64、MacPPC、MacIntel、Xll、Linux i686
 var p = window.navigator.platform;
 //检测平台
 system.win = p.indexOf("Win") == 0;
 system.mac = p.indexOf("Mac") == 0;
 system.unix = (p == "Xll'") || (p.indexOf("Linux") == 0);
 //检测Windows操作系统
 if(system.win){
 if(/Win(?:dows )?([^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";
   break;
   case "6.0":
   system.win = "Vista";
   break;
   case "7":
   system.win = "7";
   break;
   case "8":
   system.win = "8";
   break;
   case "8.1":
   system.win = "8.1";
   break;
   case "10.0":
   system.win = "10.0";
   break;
   default:
   system.win = "NT";
   break;
  }
  }
 }
 }
 //移动设备
 system.iphone = ua.indexOf("iPhone") > -1;
 system.ipod = ua.indexOf("iPod") > -1;
 system.ipad = ua.indexOf("iPad") > -1;
 system.nokiaN = ua.indexOf("NokiaN") > -1;
 //window 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(RegExp["$1"].replace("_","."));
 }else{
  system.ios = 2; //不能真正检测出来,所以只能猜测
 }
 }
 //检测安卓版本
 if(/Android (\d+.\d+)/.test(ua)){
 system.android = parseFloat(RegExp["$1"]);
 }
 //检测游戏系统
 system.wii = ua.indexOf("wii") > -1;
 system.ps = /playstation/i.test(ua);
 window.iClient.engine = engine;
 window.iClient.browser = browser;
 window.iClient.system = system;
})();

以上内容是小编给大家分享的基于javascript实现检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统的全部叙述,希望大家喜欢。下面文章给大家介绍JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备),敬请关注。!

Javascript 相关文章推荐
基于JQuery的浮动DIV显示提示信息并自动隐藏
Feb 11 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
理解javascript封装
Feb 23 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
Vuejs开发环境搭建及热更新【推荐】
Sep 07 Javascript
Vue h函数的使用详解
Feb 18 Vue.js
学习JavaScript设计模式(代理模式)
Dec 03 #Javascript
全面解析Bootstrap图片轮播效果
Dec 03 #Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
Dec 03 #Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 #Javascript
Javascript实现检测客户端类型代码封包
Dec 03 #Javascript
javascript学习小结之prototype
Dec 03 #Javascript
简单实现JS对dom操作封装
Dec 02 #Javascript
You might like
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
python实现解数独程序代码
2017/04/12 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python数据归一化及三种方法详解
2019/08/06 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
金融专业应届生求职信
2013/11/02 职场文书
主要负责人任命书
2014/06/06 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
工程部部长岗位职责
2015/02/12 职场文书
护理工作个人总结
2015/03/03 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL