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. 用户代理字符串的分析通常涉及到字符串匹配,可以使用正则表达式来进行检测和提取。例如,可以通过正则表达式...
在电子技术领域,字符串检测是数据处理和信息分析中的一个重要环节。这个标题“电子功用-字符串检测方法、装置及电子设备”所涵盖的知识点主要集中在以下几个方面: 一、字符串检测方法: 字符串检测方法通常涉及...
这里我们关注的是“字符串首字符检测”和“模糊查找”这两个核心概念,它们在各种应用场景中都有广泛的应用,比如搜索引擎、文本分析、用户输入验证等。 首先,让我们深入理解“字符串首字符检测”。这通常涉及到对...
2. **指针操作**:C语言中的指针是处理字符串的强大工具,利用指针可以高效地遍历和比较字符串。 3. **循环与条件判断**:编写循环来遍历目标字符串,并根据算法逻辑进行条件判断,以找到匹配的模式。 4. **错误...
可用于对用户输入字符串的检验和转换等。 该类允许指定检测哪些内容,如是否超过给定最大值、是否越界等等, 仅用字符串操作来检测,而不是用正则表达式,不过效率蛮高的。 资源中包括使用说明,数个(.h)和(.cpp)...
功能:给出一个字符串表达式(可以是任意复杂的字符串表达式),计算字符串表达式的值. 特性: 1:用户可以添加其它运算符号 ,也就是说用户可以制定新的运算符,引擎中不存在的运算符号,当然具体的运算类...
在IT领域,字符串模式匹配是数据结构和算法中一个至关重要的主题,特别是在计算机病毒检测、文本搜索、生物信息学等领域有着广泛的应用。本实验“基于字符串模式匹配算法的病毒感染检测问题”聚焦于如何利用这些算法...
在IT领域,MFC(Microsoft Foundation Classes)是一个C++库,由微软开发,用于构建Windows应用程序。MFC封装了Windows API...同时,也能学习到C++字符串处理和文件操作的技巧,对日后的Windows应用程序开发大有裨益。
根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...
从十六进制串还原字符串,我们需要做相反的操作:首先将十六进制串解析为字节数组,然后将字节数组解码为字符串。C#的`Convert.FromBase64String`和`Encoding.Unicode.GetString`可以完成这一过程: ```csharp ...
混淆后的字符串看起来像是随机字符序列,使得恶意用户更难以理解和篡改。"XeCoString"是一款专为解决这个问题而设计的工具,它能帮助开发者对混淆的字符串进行反混淆和解密,便于程序调试和分析。 **XeCoString的...
以下是完整的用户代理字符串检测脚本,包括检测呈现引擎、平台、Windows操作系统、移动设备和游戏系统。 var client = function(){ // 呈现引擎 var engine = { ie: 0, gecko: 0, webkit: 0, khtml: 0, ...
通过这个程序,用户可以使用简单的按键操作,就能让51单片机通过串口向其他设备发送信息,这对于调试、控制和交互式应用都非常有用。例如,在配合计算机上的串口监视工具时,可以直观地查看到按键触发的字符串,从而...
device_detector 模块,作为一个基于 Crystal 语言的库,专门用于解析和识别用户代理字符串,从而实现对设备类型的精确检测。 device_detector,这个名字如同水晶般透明而锋利,揭示了其核心功能——透过繁杂的用户...
在IT领域,字符串和二维码是两种非常常见的数据表示形式。字符串是计算机科学中用来表示文本的数据结构,而二维码则是一种二维条形码,能够存储大量的信息。本篇将深入探讨字符串与二维码之间的相互转换,以及如何...
提供的源码实现了上述过程,使得用户可以方便地在字符串和十六进制之间进行转换,尤其对于包含汉字的情况,这是非常实用的工具。通过学习和理解这段源码,开发者可以加深对字符串和十六进制编码的理解,并能应用于...