userAgent string detection in javascript

  1 var client = function () {
  2 
  3         //browser engine
  4         var engine = {
  5             ie: 0,
  6             gecko: 0,
  7             webkit: 0,
  8             khtml: 0,
  9             opera: 0,
 10             //full version
 11             ver: null
 12         };
 13 
 14         //browser
 15         var browser = {
 16 
 17             //browser
 18             ie: 0,
 19             firefox: 0,
 20             konq: 0,
 21             opera: 0,
 22             chrome: 0,
 23             safari: 0,
 24 
 25             //specific version
 26             ver: null
 27         };
 28 
 29         //platform,device and OS
 30         var system = {
 31             win: false,
 32             mac: false,
 33             xl1: false,
 34 
 35             //mobile device
 36             iphone: false,
 37             ipod: false,
 38             nokiaN: false,
 39             winMobile: false,
 40             macMobile: false,
 41 
 42             //game system
 43             wii: false,
 44             ps: false
 45         };
 46 
 47         //check browser and engine
 48         var ua = navigator.userAgent;
 49         if (window.opera) {
 50             engine.ver = browser.ver = window.opera.version();
 51             engine.opera = browser.opera = parseFloat(engine.ver);
 52         } else if (/AppleWebKit\/(\S+)/.test(ua)) {
 53             engine.ver = RegExp["$1"];
 54             engine.webkit = parseFloat(engine.ver);
 55 
 56             //check whether chrome or safari
 57             if (/Chrome\/(\S+)/.test(ua)) {
 58                 browser.ver = RegExp["$1"];
 59                 browser.chrome = parseFloat(browser.ver);
 60             } else if (/Version\/(\S+)/.test(ua)) {
 61                 browser.ver = RegExp["$1"];
 62                 browser.safari = parseFloat(browser.ver);
 63             } else {
 64                 //check version
 65                 var safariVersion = 1;
 66                 if (engine.webkit < 100) {
 67                     safariVersion = 1;
 68                 } else if (engine.webkit < 312) {
 69                     safariVersion = 1.2;
 70                 } else if (engine.webkit < 412) {
 71                     safariVersion = 1.3;
 72                 } else {
 73                     safariVersion = 2;
 74                 }
 75 
 76                 browser.safari = browser.ver = safariVersion;
 77             }
 78         } else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) {
 79             engine.ver = browser.ver = RegExp["$1"];
 80             engine.khtml = browser.konq = parseFloat(engine.ver);
 81         } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
 82             engine.ver = RegExp["$1"];
 83             engine.gecko = parseFloat(engine.ver);
 84 
 85             //check if firefox or not
 86             if (/Firefox\/(\S+)/.test(ua)) {
 87                 browser.ver = RegExp["$1"];
 88                 browser.firefox = parseFloat(browser.ver);
 89             }
 90         } else if (/MSIE ([^;]+)/.test(ua)) {
 91             engine.ver = browser.ver = RegExp["$1"];
 92             engine.ie = browser.ie = parseFloat(engine.ver);
 93         }
 94 
 95         //check browser
 96         browser.ie = engine.ie;
 97         browser.opera = engine.opera;
 98 
 99         //check platform
100         var p = navigator.platform;
101         system.win = p.indexOf("Win") == 0;
102         system.mac = p.indexOf("Mac") == 0;
103         system.xl1 = (p == "Xl1") || (p.indexOf("Linux") == 0);
104 
105         //check windows operate system
106         if (system.win) {
107             if (/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) {
108                 if (RegExp["$1"] == "NT") {
109                     switch (RegExp["$2"]) {
110                         case "5.0":
111                             system.win = "2000";
112                             break;
113                         case "5.1":
114                             system.win = "XP";
115                             break;
116                         case "6.0":
117                             system.win = "Vista";
118                             break;
119                         default:
120                             system.win = "NT";
121                             break;
122                     }
123                 } else if (RegExp["$1"] == "9x") {
124                     system.win = "ME";
125                 } else {
126                     system.win = RegExp["$1"];
127                 }
128             }
129         }
130 
131         //mobile device
132         system.iphone = ua.indexOf("iphone") > -1;
133         system.ipod = ua.indexOf("ipod") > -1;
134         system.nokiaN = ua.indexOf("NokiaN") > -1;
135         system.winMobile = (system.win == "CE");
136         system.macMobile = (system.iphone || system.ipod);
137 
138         //game system
139         system.wii = ua.indexOf("wii") > -1;
140         system.ps = /playstation/i.test(ua);
141 
142         //return these object
143         return {
144             engine: engine,
145             browser: browser,
146             system:system
147         };
148     } ();
原文地址:https://www.cnblogs.com/ongoing/p/3080090.html