JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)


Posted in Javascript onDecember 03, 2015
//取得用户代理字符串 并全部小写。
var ua = navigator.userAgent.toLowerCase();
document.write(ua);

在上篇文章给大家介绍了基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统

,感兴趣的朋友可以点击全文了解详情。

1、识别呈现引擎

引擎主要包含四种:IE、Gecko、WebKit、Opera

2、识别浏览器

主流浏览器包含四种:IE、Chrome、Firefox、Opera

3、识别平台

主流平台包含三类:Windows、Mac、Unix

4、识别Windows操作系统

Windows操作系统包含:Windows 98、Window NT、Window XP、Window Vista、Windows 7…

5、识别移动设备

主流的移动设备包含三类:iPhone、iPod、Anroid、Nokia

6、识别游戏系统。

主流的游戏系统包含两类:Wii、PS3。

网上发现的比较简单的区分代码:

JavaScript

var ua = navigator.userAgent.toLowerCase();
var isStrict = document.compatMode == "CSS1Compat"
isOpera = ua.indexOf("opera") > -1
isChrome = ua.indexOf("chrome") > -1
isSafari = !isChrome && (/webkit|khtml/).test(ua)
isSafari3 = isSafari && ua.indexOf('webkit/5') != -1
isIE = !isOpera && ua.indexOf("msie") > -1
isIE7 = !isOpera && ua.indexOf("msie 7") > -1
isIE8 = !isOpera && ua.indexOf("msie 8") > -1
isGecko = !isSafari && !isChrome && ua.indexOf("gecko") > -1
isGecko3 = isGecko && ua.indexOf("rv:1.9") > -1
isBorderBox = isIE && !isStrict 
isWin7 = ua.indexOf("nt 6.1") > -1
isVista = ua.indexOf("nt 6.0") > -1
isWin2003 = ua.indexOf("nt 5.2") > -1
isWinXp = ua.indexOf("nt 5.1") > -1
isWin2000 = ua.indexOf("nt 5.0") > -1
isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1)
isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1)
isAir = (ua.indexOf("adobeair") != -1)
isLinux = (ua.indexOf("linux") != -1) 
var sys = "";
var broser = ""; 
if(isIE){
  broser = "IE 6";
}else if(isIE7){
  broser = "IE 7";
}else if(isIE8){
  broser = "IE 8";
}else if(isOpera){
  broser = "Opera";
}else if(isChrome){
  broser = "Chrome";
}else if(isSafari){
  broser = "Safari";
}else if(isSafari3){
  broser = "Safari3";
}else{
  broser = "Unknow";
} 
if(isWin7){
  sys = "Windows 7";
}else if(isVista){
  sys = "Vista";
}else if(isWinXp){
  sys = "Windows xp";
}else if(isWin2003){
  sys = "Windows 2003";
}else if(isWin2000){
  sys = "Windows 2000";
}else if(isWindows){
  sys = "Windows";
}else if(isMac){
  sys = "Macintosh";
}else if(isAir){
  sys = "Adobeair";
}else if(isLinux){
  sys = "Linux";
}else{
  sys = "Unknow";
}
document.write(ua);
alert(sys + ":" + broser);

比较全面的区分代码:

JavaScript

var client = function(){
//呈现引擎
var engine = {
 ie   : 0,
 gecko : 0,
 webkit : 0,
 khtml : 0,
 opera : 0,
 //完整的版本号
 ver  : null
};
//浏览器
var browser = {
//主要浏览器
 ie   : 0,
 firefox : 0,
 konq  : 0,
 opera  : 0,
 chrome : 0,
 safari : 0,
 //具体的版本号
 ver   : null
};
//平台、设备和操作系统
var system ={
 win : false,
 mac : false,
 xll : false,
 //移动设备
 iphone  : false,
 ipod   : false,
 nokiaN  : false,
 winMobile : false,
 macMobile : 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);
 //确定是Chrome还是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) || /Konquersor\/([^;]+)/.test(ua)){
 engine.ver = browser.ver = RegExp["$1"];
 engine.khtml = browser.kong = paresFloat(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 = pareseFloat(browser.ver);
 }
} else if(/MSIE([^;]+)/.test(ua)){
 browser.ver = RegExp["$1"];
 browser.firefox = parseFloat(browser.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(?:doms)?([^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;
  default  :
   system.win = "NT";
   break;  
  }
 } else if (RegExp["$1"]){
  system.win = "ME";
 } else {
  system.win = RegExp["$1"];
 }
 }
}
//移动设备
system.iphone = ua.indexOf("iPhone") > -1;
system.ipod   = ua.indexOf("iPod") > -1;
system.nokiaN = ua.indexOf("NokiaN") > -1;
system.winMobile = (system.win == "CE");
system.macMobile = (system.iphone || system.ipod);
//游戏系统
system.wii = ua.indexOf("Wii") > -1;
system.ps = /playstation/i.test(ua);
//返回这些对象
return {
 engine: engine,
 browser: browser,
 system: system
};
}()

以上所述是小编给大家介绍的JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)的全部叙述,希望大家喜欢。

Javascript 相关文章推荐
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
日常收藏的jquery技巧
Dec 02 Javascript
jQuery移动web开发中的页面初始化与加载事件
Dec 03 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
Sep 20 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
Sep 12 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
JS数组属性去重并校验重复数据
Jan 10 Javascript
openlayers实现地图测距测面
Sep 25 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 #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
You might like
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
Yii2单元测试用法示例
2016/11/12 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
vant时间控件使用方法详解
2020/12/24 Javascript
python多线程和多进程关系详解
2020/12/14 Python
临床医学专业个人的自我评价
2013/09/27 职场文书
会计实习生工作总结的自我评价
2013/10/07 职场文书
优秀应届毕业生自荐信
2013/11/16 职场文书
咖啡蛋糕店创业计划书
2014/01/28 职场文书
初中家长寄语
2014/04/02 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
个人融资协议书
2014/10/02 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
中层干部考核评语
2015/01/04 职场文书
总经理聘用协议书
2015/09/21 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
聊一聊python常用的编程模块
2021/05/14 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python