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 开天辟地入门篇一
Dec 09 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
Nov 19 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
ECMAScript6新增值比较函数Object.is
Jun 12 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
Bootstrap CSS组件之导航(nav)
Dec 17 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
Mar 28 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 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禁止页面缓存的代码
2011/10/23 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
解决Python使用列表副本的问题
2019/12/19 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
学生自我鉴定范文
2013/10/04 职场文书
五一家具促销方案
2014/01/10 职场文书
旅游个人求职信范文
2014/01/30 职场文书
2014离婚协议书范文
2014/09/10 职场文书
雷锋之歌观后感
2015/06/10 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
python如何读取.mtx文件
2021/04/22 Python
MySQL中in和exists区别详解
2021/06/03 MySQL
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android