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 相关文章推荐
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
javascript 寻找错误方法整理
Jun 15 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 jQuery
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
vue 组件简介
Jul 31 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中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
javascript常用方法汇总
2014/12/02 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python第三方库的安装方法总结
2016/06/06 Python
python的re正则表达式实例代码
2018/01/24 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
python 实现汉诺塔游戏
2020/11/28 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
建筑人员岗位职责
2013/12/25 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
电力工程合作意向书
2015/05/11 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python