首先需要取得用户代理字符串如chrome:mozilla/5.0 (windows; u; windows nt 5.1; en-us) applewebkit/534.7 (khtml, like gecko) chrome/7.0.517.44 safari/534.7

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

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。

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

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);

比较全面的区分代码:

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还是Safariif (/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);//确定是不是Firefoxif (/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
};
}()

原文地址:http://www.uedbox.com/2010_12_09/2402/js-notes-checking-client-javascript.jsp

JS笔记:检测客户端(引擎、浏览器、平台、操作系统、移动设备)相关推荐

  1. 第三方浏览器h5 android测试,H5案例分享:使用JS判断客户端、浏览器、操作系统类型...

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  2. PHP笔记-获取客户端IP及平台及浏览器

    代码如下: class CookieTool{..................protected function getIPAddress(): string{$ipaddress = &quo ...

  3. userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 ...

  4. JS笔记:检测客户端(引擎、浏览器、平台、操作系统)

    来源:http://blog.yovou.com/testing-the-client/ 首先需要取得用户代理字符串 如chrome:mozilla/5.0 (windows; u; windows ...

  5. 《JavaScript高级程序设计》阅读笔记(十六):javascript检测浏览器和操作系统-detect.js...

    检测浏览器的方式 1.对象特征检测法:判断浏览器能力的通用方法.如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法.常见的原生Ajax写法中就用这种方法来创建XMLHttpReques ...

  6. js 检测浏览器,呈现引擎和平台

    [javascript] view plaincopyprint?var client = function(){ //呈现引擎 var engine = { ie : 0, gecko : 0, w ...

  7. php浏览器类型检测工具,php检测客户端浏览器类型的简单示例

    这篇文章主要为大家详细介绍了php检测客户端浏览器类型的简单示例,具有一定的参考价值,可以用来参考一下. 对php检测客户端浏览器类型代码感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  8. js笔记(四)内置对象Math和Date()、浏览器对象模型BOM

    大标题 小标题 备注 一.内置对象Math.Date() 1. Math 数学对象; 2. Date() 日期对象; 常用的数学对象:Math.PI.abs(n).round(n).random(). ...

  9. 树莓派学习笔记(五)——烟雾浓度检测(ONENET云平台收发数据代码)

    文章目录 前言 一.硬件连接 MQ-2 PCF8591 二.Onenet平台数据收发程序 onenetsub.py onenetget.py 三.程序 树莓派开启iic功能 完整程序 OneNet界面 ...

  10. web页面的js中检测浏览器是否加载flash插件,用来确保视频播放器和flash上传的正常运行

    web页面的js中检测浏览器是否加载flash插件,用来确保视频播放器和flash上传的正常运行 <script type="text/javascript" languag ...

最新文章

  1. 从源码分析DEARGUI之add_simple_plot
  2. V3S拍照上传又拍云bug排查过程
  3. SQL Server事务回滚对自增键的影响
  4. RuntimeError: Model class cmdb.models.UserInfo doesn't declare an explicit app_label
  5. myeclipse+8.6各个版本注册码(貌似8.5也可以)
  6. 模型计算量(FLOPs)和参数量(Params)的理解
  7. 阿克苏计算机考试成绩查询,阿克苏高考成绩查询系统2021
  8. 谈谈工业App (1)
  9. 计算信源熵和香农编码C语言,信息论与编码课程设计报告统计信源熵与香农编码...
  10. 微信朋友圈评论功能的实现步骤
  11. java单例模式实例_java 单例模式的实例详解
  12. python提取格式化日志
  13. word论文封面下划线对齐
  14. uniapp:轮播里如何加入视频
  15. python—简单数据抓取六(安装scrapy环境并创建爬虫项目、以顶点小说网为例利用scrapy进行爬取、scrapy相关的注意事项)
  16. 新体制SAR——BiDi SAR
  17. 四书《孟子》《论语》《中庸》《大学》五经《风》《雅》《颂》全文
  18. 清华大学计算机系研究生培养方案,攻读硕士学位研究生培养方案
  19. php 摇骰子,php实现的中秋博饼游戏之掷骰子并输出结果功能详解
  20. iOS_TUTK_多台设备同时连线卡UI问题

热门文章

  1. 机器学习之One-Hot Encoding详解
  2. 用JS 输出 正三角形
  3. vscode插件Todo Tree配置
  4. java学生选课系统下载_选课系统(java Swing) 用java开发的学生选课系统 - 下载 - 搜珍网...
  5. 数据从网卡到应用的过程
  6. python_10_绘制图表
  7. php输入为空,ecshop搜索框内容为空提示用户输入内容
  8. 常微分方程(1):可分离变量的方程
  9. ZR1012 Zbox loves keyboard (dp)
  10. html空格语言,HTML中如何键入空格