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中检测客户端类型的详细知识点包括了对访问网页的用户代理字符串UA的分析,以此来确定访问者的浏览器、平台、操作系统、移动设备以及游戏系统等信息。下面详细讲述这些知识点: 1. 用户代理字符串UA:UA...
7. 游戏系统如任天堂的Wii和索尼的Playstation(PS)等设备也可以通过特定的用户代理字符串来识别。 8. 用户代理字符串的分析通常涉及到字符串匹配,可以使用正则表达式来进行检测和提取。例如,可以通过正则表达式...
这里我们关注的是“字符串首字符检测”和“模糊查找”这两个核心概念,它们在各种应用场景中都有广泛的应用,比如搜索引擎、文本分析、用户输入验证等。 首先,让我们深入理解“字符串首字符检测”。这通常涉及到对...
可用于对用户输入字符串的检验和转换等。 该类允许指定检测哪些内容,如是否超过给定最大值、是否越界等等, 仅用字符串操作来检测,而不是用正则表达式,不过效率蛮高的。 资源中包括使用说明,数个(.h)和(.cpp)...
功能:给出一个字符串表达式(可以是任意复杂的字符串表达式),计算字符串表达式的值. 特性: 1:用户可以添加其它运算符号 ,也就是说用户可以制定新的运算符,引擎中不存在的运算符号,当然具体的运算类...
在Windows 8 64位操作系统中,Internet Explorer 10(简称IE10)作为系统内置的浏览器,其用户代理字符串(User Agent String,UAS)是网页开发者和服务器用来识别访问者所使用的浏览器类型、版本以及操作系统的重要...
1. **用户代理字符串组成**:用户代理字符串通常包括浏览器名称、版本号、操作系统的名称和版本、设备信息(如移动设备或桌面设备)、渲染引擎等。例如,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/...
在IT领域,字符串模式匹配是数据结构和算法中一个至关重要的主题,特别是在计算机病毒检测、文本搜索、生物信息学等领域有着广泛的应用。本实验“基于字符串模式匹配算法的病毒感染检测问题”聚焦于如何利用这些算法...
在IT领域,MFC(Microsoft Foundation Classes)是一个C++库,由微软开发,用于构建Windows应用程序。MFC封装了Windows API...同时,也能学习到C++字符串处理和文件操作的技巧,对日后的Windows应用程序开发大有裨益。
根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...
mfc 字符串中查找特殊字符 利用特殊字符分割字符串 mfc 字符串中查找特殊字符 利用特殊字符分割字符串 mfc 字符串中查找特殊字符 利用特殊字符分割字符串 mfc 字符串中查找特殊字符 利用特殊字符分割字符串 mfc 字符...
通过这个程序,用户可以使用简单的按键操作,就能让51单片机通过串口向其他设备发送信息,这对于调试、控制和交互式应用都非常有用。例如,在配合计算机上的串口监视工具时,可以直观地查看到按键触发的字符串,从而...
本文将围绕“字符串生成二维码源码”这一主题,详细讲解二维码生成的原理、C语言实现以及与ARM平台的关联。 首先,我们要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,它通过将数据编码...
device_detector 模块,作为一个基于 Crystal 语言的库,专门用于解析和识别用户代理字符串,从而实现对设备类型的精确检测。 device_detector,这个名字如同水晶般透明而锋利,揭示了其核心功能——透过繁杂的用户...
示例程序`gzipDemo`可能包含了上述操作的具体实现,它可能包含一个简单的用户界面,允许用户输入字符串进行压缩和解压缩,并展示结果。通过查看和学习这个示例,你可以了解如何在实际项目中应用这些技术。 在Delphi...
在IT领域,批处理文件(BAT文件)是基于DOS或Windows操作系统的一种脚本文件,主要用于自动化执行一连串命令。这些文件通常包含DOS命令行指令,可以帮助用户完成一系列重复性的任务,如字符串的提取和替换。在本文中...
提供的源码实现了上述过程,使得用户可以方便地在字符串和十六进制之间进行转换,尤其对于包含汉字的情况,这是非常实用的工具。通过学习和理解这段源码,开发者可以加深对字符串和十六进制编码的理解,并能应用于...
在JavaScript(JS)中,处理字符串是常见...通过理解和应用这些基本的JS字符串操作,你可以轻松地处理各种数据格式,特别是在处理用户输入或者从API获取数据时。熟练掌握这些技能对于任何JS开发者来说都是至关重要的。