`
wyf
  • 浏览: 433065 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

用户代理字符串检测,检测呈现引擎、平台、Windows 操作系统、移动设备 和游戏系统

    博客分类:
  • JS
 
阅读更多
var client = function(){
 //呈现引擎
 var engine = {
 ie: 0,
 gecko: 0,
 webkit: 0,
 khtml: 0,
 opera: 0,

 //完整的版本号
 ver: null
 };
 //浏览器
 var browser = {

 //主要浏览器
 ie: 0,
 firefox: 0,
 safari: 0,
 konq: 0,
 opera: 0, chrome: 0,

 //具体的版本号
 ver: null
 };
 //平台、设备和操作系统
 var system = {
 win: false,
 mac: false,
 x11: false,

 //移动设备
 iphone: false,
 ipod: false,
 ipad: false,
 ios: false,
 android: false,
 nokiaN: false,
 winMobile: 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) || /Konqueror\/([^;]+)/.test(ua)){
 engine.ver = browser.ver = RegExp["$1"];
 engine.khtml = browser.konq = parseFloat(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 = parseFloat(browser.ver);
 }
 } else if (/MSIE ([^;]+)/.test(ua)){
 engine.ver = browser.ver = RegExp["$1"];
 engine.ie = browser.ie = parseFloat(engine.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(?:dows )?([^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;
 case "6.1":
 system.win = "7";
 break;
 default:
 system.win = "NT";
 break;
 }
 } else if (RegExp["$1"] == "9x"){
 system.win = "ME";
 } else {
 system.win = RegExp["$1"];
 }
 }
 } 
 //移动设备
system.iphone = ua.indexOf("iPhone") > -1;
 system.ipod = ua.indexOf("iPod") > -1;
 system.ipad = ua.indexOf("iPad") > -1;
 system.nokiaN = ua.indexOf("NokiaN") > -1;
 //windows mobile
 if (system.win == "CE"){
 system.winMobile = system.win;
 } else if (system.win == "Ph"){
 if(/Windows Phone OS (\d+.\d+)/.test(ua)){;
 system.win = "Phone";
 system.winMobile = parseFloat(RegExp["$1"]);
 }
 }

 //检测 iOS 版本
 if (system.mac && ua.indexOf("Mobile") > -1){
 if (/CPU (?:iPhone )?OS (\d+_\d+)/.test(ua)){
 system.ios = parseFloat(RegExp.$1.replace("_", "."));
 } else {
 system.ios = 2; //不能真正检测出来,所以只能猜测
 }
 }
 //检测 Android 版本
 if (/Android (\d+\.\d+)/.test(ua)){
 system.android = parseFloat(RegExp.$1);
 }
 //游戏系统
 system.wii = ua.indexOf("Wii") > -1;
 system.ps = /playstation/i.test(ua);
 //返回这些对象
 return {
 engine: engine,
 browser: browser,
 system: system
 };
}(); 

 

分享到:
评论

相关推荐

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

    JavaScript中检测客户端类型的详细知识点包括了对访问网页的用户代理字符串UA的分析,以此来确定访问者的浏览器、平台、操作系统、移动设备以及游戏系统等信息。下面详细讲述这些知识点: 1. 用户代理字符串UA:UA...

    基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统

    7. 游戏系统如任天堂的Wii和索尼的Playstation(PS)等设备也可以通过特定的用户代理字符串来识别。 8. 用户代理字符串的分析通常涉及到字符串匹配,可以使用正则表达式来进行检测和提取。例如,可以通过正则表达式...

    IE11兼容性问题完美解决(用户代理字符串)

    本文将深入探讨如何解决IE11(Internet Explorer 11)在Windows 8/8.1系统下的兼容性问题,主要关注用户代理字符串(User Agent String, 简称UA字符串)的应用与调整。 首先,我们需要理解什么是用户代理字符串。...

    电子功用-字符串检测方法、装置及电子设备

    在电子技术领域,字符串检测是数据处理和信息分析中的一个重要环节。这个标题“电子功用-字符串检测方法、装置及电子设备”所涵盖的知识点主要集中在以下几个方面: 一、字符串检测方法: 字符串检测方法通常涉及...

    字符串首字符检测 - 模糊查找 - 字符串匹配

    这里我们关注的是“字符串首字符检测”和“模糊查找”这两个核心概念,它们在各种应用场景中都有广泛的应用,比如搜索引擎、文本分析、用户输入验证等。 首先,让我们深入理解“字符串首字符检测”。这通常涉及到对...

    C++检测字符串合法性的类(自创)

    可用于对用户输入字符串的检验和转换等。 该类允许指定检测哪些内容,如是否超过给定最大值、是否越界等等, 仅用字符串操作来检测,而不是用正则表达式,不过效率蛮高的。 资源中包括使用说明,数个(.h)和(.cpp)...

    字符串计算引擎

    功能:给出一个字符串表达式(可以是任意复杂的字符串表达式),计算字符串表达式的值. 特性: 1:用户可以添加其它运算符号 ,也就是说用户可以制定新的运算符,引擎中不存在的运算符号,当然具体的运算类...

    Windows 8 64bit上的Internet Explorer 10用户代理字符串

    在Windows 8 64位操作系统中,Internet Explorer 10(简称IE10)作为系统内置的浏览器,其用户代理字符串(User Agent String,UAS)是网页开发者和服务器用来识别访问者所使用的浏览器类型、版本以及操作系统的重要...

    Useragentanalysistool用户代理分析工具浏览器类型信息

    1. **用户代理字符串组成**:用户代理字符串通常包括浏览器名称、版本号、操作系统的名称和版本、设备信息(如移动设备或桌面设备)、渲染引擎等。例如,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/...

    基于字符串模式匹配算法的病毒感染检测问题 实验四(源代码+实验报告)

    在IT领域,字符串模式匹配是数据结构和算法中一个至关重要的主题,特别是在计算机病毒检测、文本搜索、生物信息学等领域有着广泛的应用。本实验“基于字符串模式匹配算法的病毒感染检测问题”聚焦于如何利用这些算法...

    MFC 查找文件中指定字符串

    在IT领域,MFC(Microsoft Foundation Classes)是一个C++库,由微软开发,用于构建Windows应用程序。MFC封装了Windows API...同时,也能学习到C++字符串处理和文件操作的技巧,对日后的Windows应用程序开发大有裨益。

    C语言实现字符串截取

    根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...

    device_detector:水晶碎片,用于通过用户代理字符串进行设备检测

    device_detector 模块,作为一个基于 Crystal 语言的库,专门用于解析和识别用户代理字符串,从而实现对设备类型的精确检测。 device_detector,这个名字如同水晶般透明而锋利,揭示了其核心功能——透过繁杂的用户...

    Delphi解压gzip字符串例程

    示例程序`gzipDemo`可能包含了上述操作的具体实现,它可能包含一个简单的用户界面,允许用户输入字符串进行压缩和解压缩,并展示结果。通过查看和学习这个示例,你可以了解如何在实际项目中应用这些技术。 在Delphi...

    字符串和16进制转换源码 string 和 HEX 支持汉字

    提供的源码实现了上述过程,使得用户可以方便地在字符串和十六进制之间进行转换,尤其对于包含汉字的情况,这是非常实用的工具。通过学习和理解这段源码,开发者可以加深对字符串和十六进制编码的理解,并能应用于...

    bat文件 字符串提取&替换等操作

    在IT领域,批处理文件(BAT文件)是基于DOS或Windows操作系统的一种脚本文件,主要用于自动化执行一连串命令。这些文件通常包含DOS命令行指令,可以帮助用户完成一系列重复性的任务,如字符串的提取和替换。在本文中...

    MFC 加密解密字符串

    它提供了丰富的类和功能,其中包括对字符串操作的支持。本篇文章将深入探讨如何在MFC中实现字符串的加密和解密,以确保敏感数据的安全。 首先,我们需要理解加密的基本概念。加密是将明文数据转换为难以理解的形式...

    柔性字符串匹配____中文阴影版PDF

    柔性字符串匹配可以帮助系统理解和匹配这些非标准输入,提高搜索和识别的准确性和效率。 3. **数据清洗**:在大数据处理过程中,由于数据来源多样,可能存在大量的数据格式错误、重复记录等问题。柔性字符串匹配...

Global site tag (gtag.js) - Google Analytics