snifferjs
Version:
Browser/engine/os/device detection tool
9 lines (8 loc) • 6.33 kB
JavaScript
/*!
* Sniffer is a clientside browser/engine/os/device detection tool
* v. 4.1.0 | https://github.com/wilddeer/Sniffer
* Copyright Oleg Korsunsky | http://wd.dizaina.net/
*
* MIT License
*/
!function(e){"use strict";function r(a){var f={browser:{fullName:"",name:"",version:"",majorVersion:null,minorVersion:null,patchVersion:null,engine:""},os:{fullName:"",name:"",version:"",versionName:"",versionAltNames:[],majorVersion:null,minorVersion:null,patchVersion:null},features:{bw:!1,mobile:!1,tv:!1,proxy:!1}},u={browser:[{test:["SailfishBrowser"],browser:{fullName:"Sailfish Browser",name:"sailfishbrowser",engine:"gecko",$version:{search:"SailfishBrowser/"}},features:{mobile:!0}},{test:["Edge/"],browser:{fullName:"Edge",name:"edge",engine:"edgehtml",$version:{search:"Edge/"}}},{test:["Edg/"],browser:{fullName:"Edge",name:"edge",engine:"webkit",$version:{search:"Edg/"}}},{test:["MSIE"],browser:{fullName:"Internet Explorer",name:"ie",engine:"trident",$version:{search:"MSIE "}}},{test:["Trident"],browser:{fullName:"Internet Explorer",name:"ie",engine:"trident",$version:{search:"rv:"}}},{test:["OPR/"],browser:{fullName:"Opera",name:"opera",engine:"webkit",$version:{search:"OPR/"}}},{test:["UCBrowser"],browser:{fullName:"UC Browser",name:"ucbrowser",engine:"webkit",$version:{search:"UCBrowser/"}}},{test:["YaBrowser"],browser:{fullName:"Yandex Browser",name:"yabrowser",engine:"webkit",$version:{search:"YaBrowser/"}}},{test:["Chrome"],browser:{fullName:"Chrome",name:"chrome",engine:"webkit",$version:{search:"Chrome/"}}},{test:["Firefox"],browser:{fullName:"Firefox",name:"firefox",engine:"gecko",$version:{search:"Firefox/"}}},{test:["NokiaBrowser"],browser:{fullName:"Nokia Browser",name:"nokiabrowser",engine:"webkit",$version:{search:"NokiaBrowser/"}},features:{mobile:!0}},{test:["Opera Mini","Presto"],browser:{fullName:"Opera Mini",name:"operamini",engine:"presto",$version:{search:"Version/"}},features:{mobile:!0,proxy:!0}},{test:["Opera Mini","WebKit"],browser:{fullName:"Opera Mini",name:"operamini",engine:"webkit"},features:{mobile:!0,proxy:!0}},{test:["Opera"],browser:{fullName:"Opera",name:"opera",engine:"presto",$version:{search:"Version/"}}},{test:["OviBrowser"],browser:{fullName:"Ovi Browser",name:"ovi",engine:"gecko",$version:{search:"OviBrowser/"}},features:{mobile:!0,proxy:!0}},{test:["CriOS/"],browser:{fullName:"Chrome",name:"chrome",engine:"webkit",$version:{search:"CriOS/"}}},{test:["Coast/"],browser:{fullName:"Opera Coast",name:"coast",engine:"webkit",$version:{search:"Coast/"}}},{test:["Safari","Version/",/(iPhone|iPod|iPad|Macintosh|Windows)/],browser:{fullName:"Safari",name:"safari",engine:"webkit",$version:{search:"Version/"}}},{test:["WebKit"],browser:{engine:"webkit"}},{test:["Gecko/"],browser:{engine:"gecko"}}],os:[{test:["Sailfish"],os:{fullName:"Sailfish OS",name:"sailfish"},features:{mobile:!0}},{test:["Windows Phone"],os:{fullName:"Windows Phone",name:"winphone",$version:{search:"Windows Phone "}},features:{mobile:!0}},{test:["Windows"],os:{fullName:"Windows",name:"win",$version:{search:"Windows NT ",names:{"10.0":"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP",5.01:"2000","5.0":"2000"},altNames:{5.2:["Server 2003"]}}}},{test:["Macintosh","OS X"],os:{fullName:"macOS",name:"osx",$version:{search:/OS X /,names:{10.6:"Snow Leopard",10.7:"Lion",10.8:"Mountain Lion",10.9:"Mavericks","10.10":"Yosemite",10.11:"El Capitan",10.12:"Sierra",10.13:"High Sierra",10.14:"Mojave",10.15:"Catalina","11.0":"Big Sur"}}}},{test:["Ubuntu"],os:{fullName:"Ubuntu",name:"ubuntu"}},{test:["Fedora"],os:{fullName:"Fedora",name:"fedora",$version:{search:"Fedora/",names:{20:"Heisenbug",19:"Schrödinger's Cat",18:"Spherical Cow",17:"Beefy Miracle",16:"Verne",15:"Lovelock",14:"Laughlin",13:"Goddard",12:"Constantine",11:"Leonidas",10:"Cambridge",9:"Sulphur",8:"Werewolf",7:"Moonshine"}}}},{test:["Kindle"],os:{fullName:"Kindle",name:"kindle",$version:{search:"Kindle/"}},features:{bw:!0,mobile:!0}},{test:[/(BlackBerry|BB\d+)/],os:{fullName:"BlackBerry",name:"blackberry",$version:{search:"Version/"}},features:{mobile:!0}},{test:["Symbian"],os:{fullName:"Symbian",name:"symbian"},features:{mobile:!0}},{test:["Series40"],os:{fullName:"Symbian",name:"symbian"},features:{mobile:!0}},{test:["PlayStation Vita"],os:{fullName:"PlayStation Vita",name:"psvita"},features:{mobile:!0}},{test:[/playstation/i],os:{fullName:"PlayStation",name:"playstation",$version:{search:/playstation\s/i}},features:{tv:!0}},{test:["Nintendo DSi"],os:{fullName:"Nintendo DSi",name:"dsi"},features:{mobile:!0}},{test:["New Nintendo 3DS"],os:{fullName:"New Nintendo 3DS",name:"n3ds"},browser:{engine:"webkit"},features:{mobile:!0}},{test:["Nintendo 3DS"],os:{fullName:"Nintendo 3DS",name:"3ds"},browser:{engine:"webkit"},features:{mobile:!0}},{test:["Viera"],os:{fullName:"Viera",name:"viera"},browser:{engine:"webkit"},features:{tv:!0}},{test:["SonyDTV"],features:{tv:!0}},{test:["Android"],os:{fullName:"Android",name:"android",$version:{search:"Android "}},features:{mobile:!0}},{test:[/iPhone|iPod|iPad/],os:{fullName:"iOS",name:"ios",$version:{search:"OS "}},features:{mobile:!0}}],features:[{test:[/mobile/i],features:{mobile:!0}},{test:[/smart-{0,1}tv/i],features:{tv:!0}}]};if(!a)return f;function r(e){for(var r=0;r<e.length;r++){for(var s=!0,i=0;i<e[r].test.length;i++)if(e[r].test[i]instanceof RegExp){if(!e[r].test[i].test(a)){s=!1;break}}else if(-1==a.indexOf(e[r].test[i])){s=!1;break}if(s){n(e[r]);break}}}function n(e){for(var r in u)if(u.hasOwnProperty(r)&&e[r]){if(e[r].$version){var s=b(e[r].$version.search);if(s){var i=s.split("."),n=e[r].$version.names,a=e[r].$version.altNames;if(e[r].version=s,i[0]&&(e[r].majorVersion=parseInt(i[0])),i[1]&&(e[r].minorVersion=parseInt(i[1])),i[2]&&(e[r].patchVersion=parseInt(i[2])),n)for(var o,t=[],l=0;l<i.length;l++)t.push(i[l]),n[o=t.join(".")]&&(e[r].versionName=n[o]),a&&a[o]&&(e[r].versionAltNames=a[o])}}for(var m in e[r])e[r].hasOwnProperty(m)&&"$"!==m[0]&&(f[r][m]=e[r][m])}}function b(e){var r;if(e instanceof RegExp){if(!(r=(a.match(e)||[])[0]))return}else r=e;var s=a.indexOf(r);if(-1!=s){var i=a.substring(s+r.length),n=/^(\d+(\.|_)){0,2}\d+/.exec(i);if(n)return n[0].replace(/_/g,".")}}return function(){for(var e in u)r(u[e])}(),f}"undefined"!=typeof module&&module.exports?module.exports=r:e.Sniffer=r}(this);