基于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 相关文章推荐
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
简单了解JavaScript中常见的反模式
Jun 21 Javascript
element-ui中按需引入的实现
Dec 25 Javascript
JS数组的常用方法整理
Mar 31 Javascript
学习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
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php多文件上传实现代码
2014/02/20 PHP
php生成zip文件类实例
2015/04/07 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
详解vue配置后台接口方式
2019/03/29 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python实现两个文件夹的同步
2019/08/29 Python
python第三方库学习笔记
2020/02/07 Python
Python list和str互转的实现示例
2020/11/16 Python
python模块内置属性概念及实例
2021/02/18 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
会计岗位职责
2013/11/08 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
优良学风班总结材料
2014/02/08 职场文书
小学生开学感言
2014/02/28 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
房屋租房协议书范本
2014/12/04 职场文书
交通安全学习心得体会
2016/01/18 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers