Mobile and browser detector

One-liner javascript browser and mobile detection

by anil001ry

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<h3>Result:</h3>
<div id="result"></div>
<br>
<h3>Legend</h3>
browser:
<ul>
    <li><code>ed</code> = Microsoft Edge</li>
    <li><code>ie9</code> = Explorer 9</li>
    <li><code>ie10</code> = Explorer 10</li>
    <li><code>ie11</code> = Explorer 11</li>
    <li><code>ie</code>? = Explorer 8 and below</li>
    <li><code>ff</code> = Firefox</li>
    <li><code>gc</code> = Google Chrome</li>
    <li><code>sa</code> = Safari</li>
    <li><code>op</code> = Opera</li>
</ul>

os:
<ul>
    <li><code>win7</code></li>
    <li><code>win8</code></li>
    <li><code>win9</code></li>
    <li><code>win10</code></li>
    <li><code>winvista</code></li>
    <li><code>winxp</code></li>
    <li><code>winnt</code></li>
    <li><code>mac</code></li>
    <li><code>linux</code></li>
    <li><code>nix</code></li>
</ul>

mobile - including tablets:
<ul>
    <li><code>0</code> = Not a mobile or tablet device</li>
    <li><code>w</code> = Windows Phone (Nokia Lumia)</li>
    <li><code>i</code> = iOS (iPhone iPad)</li>
    <li><code>a</code> = Android</li>
    <li><code>b</code> = Blackberry</li>
    <li><code>s</code> = Undetected mobile device running Safari</li>
    <li><code>1</code> = Undetected mobile device</li>
</ul>

tablet:
<ul>
    <li><code>true</code></li>
    <li><code>false</code></li>
</ul>

touch:
<ul>
    <li><code>true</code></li>
    <li><code>false</code></li>
</ul>

JavaScript

var 
			ua = navigator.userAgent,
			browser = /Edge\/\d+/.test(ua) ? 'ed' : /MSIE 9/.test(ua) ? 'ie9' : /MSIE 10/.test(ua) ? 'ie10' : /MSIE 11/.test(ua) ? 'ie11' : /MSIE\s\d/.test(ua) ? 'ie?' : /rv\:11/.test(ua) ? 'ie11' : /Firefox\W\d/.test(ua) ? 'ff' : /Chrom(e|ium)\W\d|CriOS\W\d/.test(ua) ? 'gc' : /\bSafari\W\d/.test(ua) ? 'sa' : /\bOpera\W\d/.test(ua) ? 'op' : /\bOPR\W\d/i.test(ua) ? 'op' : typeof MSPointerEvent !== 'undefined' ? 'ie?' : '',
			os = /Windows NT 10/.test(ua) ? "win10" : /Windows NT 6\.0/.test(ua) ? "winvista" : /Windows NT 6\.1/.test(ua) ? "win7" : /Windows NT 6\.\d/.test(ua) ? "win8" : /Windows NT 5\.1/.test(ua) ? "winxp" : /Windows NT [1-5]\./.test(ua) ? "winnt" : /Mac/.test(ua) ? "mac" : /Linux/.test(ua) ? "linux" : /X11/.test(ua) ? "nix" : "",
			touch = 'ontouchstart' in document.documentElement,
			mobile = /IEMobile|Windows Phone|Lumia/i.test(ua) ? 'w' : /iPhone|iP[oa]d/.test(ua) ? 'i' : /Android/.test(ua) ? 'a' : /BlackBerry|PlayBook|BB10/.test(ua) ? 'b' : /Mobile Safari/.test(ua) ? 's' : /webOS|Mobile|Tablet|Opera Mini|\bCrMo\/|Opera Mobi/i.test(ua) ? 1 : 0,
			tablet = /Tablet|iPad/i.test(ua);

result.innerHTML = '' +
    '<br>ua = ' + ua +
    '<br>browser = ' + browser +
    '<br>os = ' + os +
    '<br>mobile = ' + mobile +
    '<br>tablet = ' + tablet +
    '<br>touch = ' + touch +
    '';