1. 程式人生 > 其它 >JavaScript:通過瀏覽器識別裝置(Windows, Mac, iOS,iPad等)

JavaScript:通過瀏覽器識別裝置(Windows, Mac, iOS,iPad等)

通過瀏覽器識別裝置

  1 var client = function () {
  2     // 引擎
  3     var engine = {
  4         ie: 0,
  5         gecko: 0,
  6         webkit: 0,
  7         khtml: 0,
  8         opera: 0,
  9         version: null // 版本號
 10     };
 11     // 瀏覽器
 12     var brower = {
 13         ie: 0,
 14         firefox: 0,
 15
safari: 0, 16 konq: 0, 17 opera: 0, 18 chrome: 0, 19 version: null // 版本號 20 }; 21 22 // 平臺、裝置、作業系統 23 var system = { 24 win: false, 25 mac: false, 26 xll: false,// Unix 27 28 // 移動裝置 29 iphone: false, 30
ipod: false, 31 ipad: false, 32 ios: false, 33 android: false, 34 nokiaN: false,// 諾基亞N系列手機 35 winMobile: false, 36 37 // 遊戲系統 38 wii: false,// 任天堂 39 ps: false 40 }; 41 42 // 檢測引擎和瀏覽器 43 var ua = navigator.userAgent;
44 if (window.opera) { 45 engine.version = brower.version = window.opera.version(); 46 engine.opera = brower.opera = parseFloat(engine.version); 47 } else if (/AppleWebKit\/(\S+)/.test(ua)) { 48 engine.version = RegExp["$1"]; 49 engine.webkit = parseFloat(engine.version); 50 51 // chrome or safari 52 if (/Chrome\/(\S+)/.test(ua)) { 53 54 if (/Edg\/(\S+)/ig.test(ua)) { 55 engine.version = brower.version = RegExp["$1"]; 56 engine.ie = brower.ie = parseFloat(engine.version); 57 } else { 58 brower.version = RegExp["$1"]; 59 brower.chrome = parseFloat(brower.version); 60 } 61 } else if (/Version\/(\S+)/.test(ua)) { 62 brower.version = RegExp["$1"]; 63 brower.safari = parseFloat(brower.version); 64 } else { 65 // 近似確定版本號 66 var safariVersion = 1; 67 if (engine.webkit < 100) { 68 safariVersion = 1; 69 } else if (engine.webkit < 312) { 70 safariVersion = 1.2; 71 } else if (engine.webkit < 412) { 72 safariVersion = 1.3; 73 } else { 74 safariVersion = 3; 75 } 76 brower.safari = brower.version = safariVersion; 77 } 78 } else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) { 79 engine.version = brower.version = RegExp["$1"]; 80 engine.khtml = brower.konq = parseFloat(brower.version); 81 82 } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) { 83 engine.version = RegExp["$1"]; 84 engine.gecko = parseFloat(engine.version); 85 86 // 確定是否是Firefox 87 if (/FireFox\/(\S+)/.test(ua)) { 88 brower.version = RegExp["$1"]; 89 brower.firefox = parseFloat(brower.version); 90 } 91 92 } else if (/MSIE ([^;]+)/.test(ua)) { 93 // 不適用IE11和Edge 94 engine.version = brower.version = RegExp["$1"]; 95 engine.ie = brower.ie = parseFloat(engine.version); 96 } else if (/rv:([^\)]+)\)/.test(ua)) { 97 // 判斷IE11 98 engine.version = brower.version = RegExp["$1"]; 99 engine.ie = brower.ie = parseFloat(engine.version); 100 } 101 102 104 // 檢測瀏覽器 105 brower.ie = engine.ie; 106 brower.opera = engine.opera; 107 108 // 檢測平臺 109 var p = navigator.platform; 110 system.win = p.indexOf("Win") == 0; 111 system.mac = p.indexOf("Mac") == 0; 112 system.xll = (p.indexOf("Linux") == 0) || (p == "Xll"); 113 114 // 檢測windows作業系統 115 if (system.win) { 116 if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) { 117 if (RegExp["$1"] == "NT") { 118 switch (RegExp["$2"]) { 119 case "5.0": 120 system.win = "2000"; 121 break; 122 case "5.1": 123 system.win = "XP"; 124 break; 125 case "6.0": 126 system.win = "Vista"; 127 break; 128 case "6.1": 129 system.win = "7"; 130 break; 131 default: 132 system.win = "NT"; 133 break; 134 135 } 136 } else if (RegExp["$1"] == "9x") { 137 system.win = "ME"; 138 } else { 139 system.win = RegExp["$1"] 140 } 141 } 142 } 143 144 // 移動裝置 145 system.iphone = ua.indexOf("iPhone") > -1; 146 system.ipod = ua.indexOf("iPod") > -1; 147 system.ipad = ua.indexOf("iPad") > -1; 148 system.nokiaN = ua.indexOf("NokiaN") > -1; 149 150 // windows phone 151 if (system.win == "CE") { 152 system.winMobile = system.win; 153 } else if (system.win == "Ph") { 154 if (/Windows Phone OS (\d+.\d+)/.test(us)) { 155 system.win = "Phone"; 156 system.winMobile = parseFloat(RegExp["$1"]) 157 } 158 } 159 160 // 檢測IOS版本 161 if (system.mac && ua.indexOf("Mobile") > -1) { 162 if (/CPU (?:iPhone )?OS (\d+_\d+)/.test(ua)) { 163 system.ios = parseFloat(RegExp.$1.replace("_", ".")); 164 165 } else { 166 system.ios = 2; 167 } 168 } 169 170 // 檢測Android版本 171 if (/Android (\d+\.\d+)/.test(ua)) { 172 system.android = parseFloat(RegExp.$1); 173 } 174 175 // 遊戲系統 176 system.wii = ua.indexOf("Wii") > -1; 177 system.ps = /playstation/i.test(ua); 178 179 return { 180 engine: engine, 181 brower: brower, 182 system: system 183 }; 184 185 }();

Windows作業系統下部分瀏覽器測試結果:

好好做人,認真生活。