mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
7 lines
7.2 KiB
JavaScript
7 lines
7.2 KiB
JavaScript
// UA-Parser.JS v0.4.15
|
|
// Lightweight JavaScript-based User-Agent string parser
|
|
// https://github.com/faisalman/ua-parser-js
|
|
//
|
|
// Copyright © 2012 Faisalman
|
|
// Dual licensed under GPLv2 & MIT
|
|
(function(e,t){"use strict";var n={regex:function(){var e,n,r,i,s,o,u=arguments;for(n=0;n<u.length;n+=2){var a=u[n],f=u[n+1];if(typeof e=="undefined"){e={};for(i=0;i<f.length;i++)typeof f[i]=="object"?e[f[i][0]]=t:e[f[i]]=t;if(this.getUA().toString()==="")return e}for(r=0;r<a.length;r++){s=a[r].exec(this.getUA());if(!!s){for(i=0;i<f.length;i++)o=s[i+1],typeof f[i]=="object"&&f[i].length===2?e[f[i][0]]=f[i][1]:typeof f[i]=="object"&&f[i].length===3?typeof f[i][1]=="function"&&(!f[i][1].exec||!f[i][1].test)?e[f[i][0]]=o?f[i][1].call(this,o,f[i][2]):t:e[f[i][0]]=o?o.replace(f[i][1],f[i][2]):t:e[f[i]]=o?o:t;break}}if(!!s)break}return e},string:function(e,n){for(var r in n)if(n.hasOwnProperty(r))if(typeof n[r]=="object"&&n[r].length>0){for(var i=0;i<n[r].length;i++)if(e.toLowerCase().indexOf(n[r][i].toLowerCase())!==-1)return r.toString()==="undefined"?t:r}else if(e.toLowerCase().indexOf(n[r].toLowerCase())!==-1)return r.toString()==="undefined"?t:r;return e}},r={browser:{oldsafari:{major:{1:["/85","/125","/312"],2:["/412","/416","/417","/419"],"undefined":"/"},version:{"1.0":"/85",1.2:"/125",1.3:"/312","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","undefined":"/"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",RT:"ARM"}}}},i={browser:[[/(opera\smini)\/((\d+)?[\w\.-]+)/i,/(opera\smobi).+version\/((\d+)?[\w\.-]+)/i,/(opera).+version\/((\d+)?[\w\.]+)/i,/(opera)[\/\s]+((\d+)?[\w\.]+)/i,/(kindle)\/((\d+)?[\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i,/(avant\sbrowser|iemobile|slimbrowser|baidubrowser)[\/\s]?((\d+)?[\w\.]*)/i,/ms(ie)\s((\d+)?[\w\.]+)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|s60|series60|ovibrowser|bolt)\/((\d+)?[\w\.]+)/i,/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i],["name","version","major"],[/(dolfin)\/((\d+)?[\w\.]+)/i],[["name","Dolphin"],"version","major"],[/(yabrowser)\/((\d+)?[\w\.]+)/i],[["name","Yandex"],"version","major"],[/((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i],[["name","Chrome"],"version","major"],[/version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i],["version","major","name"],[/applewebkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i],["name",["major",n.string,r.browser.oldsafari.major],["version",n.string,r.browser.oldsafari.version]],[/(konqueror)\/((\d+)?[\w\.]+)/i,/(applewebkit|khtml)\/((\d+)?[\w\.]+)/i],["name","version","major"],[/(navigator|netscape)\/((\d+)?[\w\.-]+)/i],[["name","Netscape"],"version","major"],[/(swiftfox)/i,/(iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo)[\/\s]?((\d+)?[\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(uc\s?browser|polaris|lynx|dillo|icab|doris)[\/\s]?((\d+)?[\w\.]+)/i,/(gobrowser)\/?((\d+)?[\w\.]+)*/i,/(mosaic)[\/\s]((\d+)?[\w\.]+)/i],["name","version","major"]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],["model","vendor",["type","Tablet"]],[/(hp).+(touchpad)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],["vendor","model",["type","Tablet"]],[/\((ip[honed]+);.+(apple)/i],["model","vendor",["type","Mobile"]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola)[\s_-]?([\w-]+)*/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],["vendor","model",["type","Mobile"]],[/\((bb10);\s(\w+)/i],[["vendor","BlackBerry"],"model",["type","Mobile"]],[/android.+((transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+))/i],[["vendor","Asus"],"model",["type","Tablet"]],[/(sony)\s(tablet\s[ps])/i],["vendor","model",["type","Tablet"]],[/(nintendo|playstation)\s([wids3portablev]+)/i],["vendor","model",["type","Console"]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w+)*/i],["vendor",["model",/_/g," "],["type","Mobile"]],[/\s((milestone|droid[2x]?))[globa\s]*\sbuild\//i,/(mot)[\s-]?(\w+)*/i],[["vendor","Motorola"],"model",["type","Mobile"]],[/android.+\s((mz60\d|xoom[\s2]{0,2}))\sbuild\//i],[["vendor","Motorola"],"model",["type","Tablet"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9))/i],[["vendor","Samsung"],"model",["type","Tablet"]],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i,/sec-((sgh\w+))/i],[["vendor","Samsung"],"model",["type","Mobile"]],[/(sie)-(\w+)*/i],[["vendor","Siemens"],"model",["type","Mobile"]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]+)*/i],[["vendor","Nokia"],"model",["type","Mobile"]],[/android\s3\.[\s\w-;]{10}((a\d{3}))/i],[["vendor","Acer"],"model",["type","Tablet"]],[/android\s3\.[\s\w-;]{10}(lg?)-([06cv9]{3,4})/i],[["vendor","LG"],"model",["type","Tablet"]],[/(lg)[e;\s-\/]+(\w+)*/i],[["vendor","LG"],"model",["type","Mobile"]],[/(mobile|tablet);.+rv\:.+gecko\//i],["type","vendor","model"]],engine:[[/(presto)\/([\w\.]+)/i,/([aple]*webkit|trident|netfront)\/([\w\.]+)/i,/(khtml)\/([\w\.]+)/i,/(tasman)\s([\w\.]+)/i],["name","version"],[/rv\:([\w\.]+).*(gecko)/i],["version","name"]],os:[[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone\sos|windows\s?[mobile]*)[\s\/]?([ntce\d\.\s]+\w)/i],["name",["version",n.string,r.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[["name","Windows"],["version",n.string,r.os.windows.version]],[/\((bb)(10);/i],[["name","BlackBerry"],"version"],[/(blackberry).+version\/([\w\.]+)/i,/(tizen)\/([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i],["name","version"],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[["name","Symbian"],"version"],[/(nintendo|playstation)\s([wids3portablev]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],["name","version"],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[["name","Chromium OS"],"version"],[/(sunos)\s?([\w\.]+\d)*/i],[["name","Solaris"],"version"],[/\s(\w*bsd|dragonfly)\s?([\w\.]+)*/i],["name","version"],[/(ip[honead]+).*os\s*([\w]+)*\slike\smac/i],[["name","iOS"],["version",/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i],["name",["version",/_/g,"."]],[/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|qnx|os\/2|amigaos|morphos)/i,/(unix)\s?([\w\.]+)*/i],["name","version"]]},s=function(r){var s=r||(e&&e.navigator&&e.navigator.userAgent?e.navigator.userAgent:"");this.getBrowser=function(){return n.regex.apply(this,i.browser)},this.getDevice=function(){return n.regex.apply(this,i.device)},this.getEngine=function(){return n.regex.apply(this,i.engine)},this.getOS=function(){return n.regex.apply(this,i.os)},this.getResult=function(){return{browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice()}},this.getUA=function(){return s},this.setUA=function(e){return s=e,this},this.setUA(s)};typeof exports!="undefined"&&!/\[object\s[DOM]*Window\]/.test(e.toString())?(typeof module!="undefined"&&module.exports&&(exports=module.exports=s),exports.UAParser=s):e.UAParser=s})(this); |