1// User Agent Checker 2// v0.1.0 3// ----------------------------------------------------------- 4 5+(function () { 6 _uac = {}; // define _uac as a global object 7 var ua = window.navigator.userAgent.toLowerCase(); 8 var ver = window.navigator.appVersion.toLowerCase(); 9 10 // check browser version 11 _uac.browser = (function(){ 12 if (ua.indexOf('edge') !== -1) return 'edge'; // Edge 13 else if (ua.indexOf("iemobile") !== -1) return 'iemobile'; // ieMobile 14 else if (ua.indexOf('trident/7') !== -1) return 'ie11'; // ie11 15 else if (ua.indexOf("msie") !== -1 && ua.indexOf('opera') === -1){ 16 if (ver.indexOf("msie 6.") !== -1) return 'ie6'; // ie6 17 else if (ver.indexOf("msie 7.") !== -1) return 'ie7'; // ie7 18 else if (ver.indexOf("msie 8.") !== -1) return 'ie8'; // ie8 19 else if (ver.indexOf("msie 9.") !== -1) return 'ie9'; // ie9 20 else if (ver.indexOf("msie 10.") !== -1) return 'ie10'; // ie10 21 } 22 else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) return 'chrome'; // Chrome 23 else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) return 'safari'; // Safari 24 else if (ua.indexOf('opera') !== -1) return 'opera'; // Opera 25 else if (ua.indexOf('firefox') !== -1) return 'firefox'; // FIrefox 26 else return 'unknown_browser'; 27 })();
28 29 // check device 30 _uac.device = (function(){ 31 if(ua.indexOf('iphone') !== -1 || ua.indexOf('ipod') !== -1 ) return 'iphone'; 32 else if (ua.indexOf('ipad') !== -1) return 'ipad'; 33 else if (ua.indexOf('android') !== -1) return 'android'; 34 else if (ua.indexOf('windows') !== -1 && ua.indexOf('phone') !== -1) return 'windows_phone'; 35 else return ''; 36 })(); 37 38 // check ios version 39 _uac.iosVer = (function(){ 40 if ( /iP(hone|od|ad)/.test( navigator.platform ) ) { 41 var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); 42 var versions = [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; 43 return versions[0]; 44 } 45 else return 0; 46 })(); 47 48 // check android version 49 _uac.androidVer = (function(){ 50 if ( /Android/.test( navigator.appVersion ) ) { 51 var v = ua.slice(ua.indexOf("android")+8).split(";"); 52 return parseFloat(v[0]); 53 } 54 else return 0; 55 })(); 56 57 _uac.isiOS = (_uac.device === 'iphone' || _uac.device === 'iPad'); 58 _uac.isMobile = (ua.indexOf('mobi') !== -1 || _uac.device === 'iphone' || (_uac.device === 'windows_phone' && ua.indexOf('wpdesktop') === -1) || _uac.device === 'iemobile'); 59 _uac.isTablet = (_uac.device === 'ipad' || (_uac.device === 'android' && !_uac.isMobile)); 60 _uac.isTouch = ('ontouchstart' in window); 61 _uac.isModern = !(_uac.browser === 'ie6' || _uac.browser === 'ie7' || _uac.browser === 'ie8' || _uac.browser === 'ie9' || (0 < _uac.iosVer && _uac.iosVer < 8)); 62 63 // Set the results as class names of the html 64 _uac.addClass = function() { 65 var home_class = ' '; 66 home_class += (_uac.browser !== '') ? _uac.browser + " " : 'browser-unknown ', 67 home_class += (_uac.device !== '') ? _uac.device + " " : 'device-unknown ', 68 home_class += (_uac.isMobile) ? 'mobile ' : 'desktop ', 69 home_class += (_uac.isTouch) ? 'touch ' : 'mouse ', 70 home_class += (_uac.isModern) ? 'modern ' : 'old '; 71 72 document.addEventListener('DOMContentLoaded', function() { 73 document.documentElement.className += home_class; 74 }); 75 }; 76 _uac.addClass(); 77 78})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.