`
wyf
  • 浏览: 439580 次
  • 性别: 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字符串)的应用与调整。 首先,我们需要理解什么是用户代理字符串。...

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

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

    基于字符串模式匹配算法的病毒感染检测问题_算法_数据结构_

    2. **指针操作**:C语言中的指针是处理字符串的强大工具,利用指针可以高效地遍历和比较字符串。 3. **循环与条件判断**:编写循环来遍历目标字符串,并根据算法逻辑进行条件判断,以找到匹配的模式。 4. **错误...

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

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

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

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

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

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

    C语言实现字符串截取

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

    XeCoString 字符串反混淆 字符串解密

    混淆后的字符串看起来像是随机字符序列,使得恶意用户更难以理解和篡改。"XeCoString"是一款专为解决这个问题而设计的工具,它能帮助开发者对混淆的字符串进行反混淆和解密,便于程序调试和分析。 **XeCoString的...

    Delphi解压gzip字符串例程

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

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

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

    字符串与二维码之间的相互转换

    在IT领域,字符串和二维码是两种非常常见的数据表示形式。字符串是计算机科学中用来表示文本的数据结构,而二维码则是一种二维条形码,能够存储大量的信息。本篇将深入探讨字符串与二维码之间的相互转换,以及如何...

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

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

    useragent:用于用户代理字符串的GoGolang解析器

    操作系统名称和版本(Windows,Android,iOS等) 设备类型(移动设备,台式机,平板电脑,机器人) 设备名称(如果有)(iPhone,iPad,华为VNS-L21) 漫游器提供的网址( 等) 地位 在检测Andorid设备名称方面...

    MFC 加密解密字符串

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

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

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

    51单片机串口接收字符串

    实际有两个程序 一个是接收以某一特定字符开头的字符串 并不接收此特定字符 这个字符只起个标志的作用。 另一个是单纯接收字符串。 所接受的字符串存在一个数组中,程序简洁命了。 所用单片机:STC89C52

    C#正则表达式大全, 判断字符串是否为正整数,中文,英文.....

    正则表达式是指用来描述字符串模式的表达式,通过使用正则表达式,我们可以轻松地实现字符串的匹配、验证、提取和替换等操作。在 C# 中,我们可以使用 System.Text.RegularExpressions 命名空间中的 Regex 类来实现...

Global site tag (gtag.js) - Google Analytics