javascript浏览器用户代理检测脚本实现方法


Posted in Javascript onOctober 27, 2017

以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Windows操作系统、移动设备和游戏系统。

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, 
  mac: false, 
  x11: false, 
 
  // 移动设备 
  iphone: false, 
  ipod: false, 
  ipad: false, 
  ios: false, 
  android: false, 
  nokiaN: false, 
  winMobile: false, 
 
  // 游戏系统 
  wii: false, 
  ps: false
 }; 
 
 // 检测呈现引擎和浏览器 
  var ua = navigator.userAgent;  
 if (window.opera){ 
  engine.ver = browser.ver = window.opera.version(); 
  engine.opera = browser.opera = parseFloat(engine.ver); 
 } 
 else if (/AppleWebKit\/(\S+)/.test(ua)){ 
  engine.ver = RegExp["$1"]; 
  engine.webkit = parseFloat(engine.ver); 
 
  // 确定是Chroeme还是Safari 
   if (/Chrome\/(\S+)/.test(ua)){ 
   browser.ver = RegExp["$1"]; 
   browser.chrome = parseFloat(browser.ver); 
  } 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.safari = browser.ver = safariVersion;   
  } 
 } 
 else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){ 
  engine.ver = browser.ver = RegExp["$1"]; 
  engine.khtml = browser.konq = parseFloat(engine.ver); 
 } 
 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); 
  } 
 } 
 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); 
 
 // 检测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 "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; 
 
 // windows 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 (?:Phone )?OS (\d+_\d+)/.test(ua)){ 
   system.ios = parseFloat(RegExp.$1.replace("_",".")); 
  } 
  else{ 
   system.ios = 2; 
   // 不能真正检测出来,所以只能猜测 
  } 
 } 
 
 // 检测Android版本 
 if(/Android (\d+\.\d+)/.test(ua)){ 
  system.android = parseFloat(RegExp.$1); 
 } 
 
 // 游戏系统 
 system.wii = ua.indexOf("Wii") > -1; 
 system.ps = /playstation/i.test(ua); 
 
 // 返回这些对象 
 return { 
  engine:  engine, 
  browser: browser, 
  system:  system   
 }; 
 
 // console.log(engine); 
 // console.log(browser); 
 // console.log(system); 
}();

以上这篇javascript浏览器用户代理检测脚本实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype 工具函数 学习
Jul 23 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 Javascript
javascript作用域链与执行环境详解
Mar 25 Javascript
js,jq,css多方面实现简易下拉菜单功能
May 13 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
Sep 01 Javascript
详解如何在Vue项目中导出Excel
Apr 19 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
vue中的event bus非父子组件通信解析
Oct 27 #Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 #Javascript
webpack配置之后端渲染详解
Oct 26 #Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 #jQuery
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 #Javascript
node文字生成图片的示例代码
Oct 26 #Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 #Javascript
You might like
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
js 编写规范
2010/03/03 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
javascript实现数独解法
2015/03/14 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python多重继承实例
2014/10/11 Python
Python的pycurl包用法简介
2015/11/13 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Python笔记之工厂模式
2019/11/20 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
电大毕业生自我鉴定
2014/04/10 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python