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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
May 26 Javascript
获取select的value、text值的简单示例(jquery与javascript)
Dec 07 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
vue webpack实用技巧总结
Apr 24 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 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
海贼王:最美的悬赏令!
2020/03/02 日漫
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
webpack v4 从dev到prd的方法
2018/04/02 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Django添加feeds功能的示例
2018/08/07 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
学徒工职责
2014/03/06 职场文书
本科毕业生自荐信
2014/06/02 职场文书
就业协议书
2014/09/12 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
绿里奇迹观后感
2015/06/15 职场文书
汽车修理厂管理制度
2015/08/05 职场文书