JSFiddle - React, Tailwind, and code Playground

by James Peter

HTML

<h1>Detectando nombre y versión del navegador con JavaScript.<br>
  Actualizado para reconocer casi cualquier Navegador.</h1>
<h2 id="resultado">detectando…</h2>
<p id="detalles">n/a</p>

CSS

@import url(https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans:300);

body {
  color: black;
  background-color: white;
  font-family: "Fira Sans", sans-serif;
  font-weight: 300;
  margin: 0;
  padding: 3rem;
}

h1 {
  color: darkgrey;
  text-align: center;
  font-weight: 300;
  font-size: 1.5rem;
  line-height: 2rem;
}

h2 {
  text-align: center;
  font-weight: 300;
  font-size: 4rem;
}

p {
  color: darkgrey;
  text-align: center;
  font-family: "Fira Mono", monospace;
  font-size: 1rem;
  line-height: 1.5rem;
}

JavaScript

var result = document.getElementById('resultado');

navigator.browserSpecs = (function(uA){
    var tmp, 
    M = uA.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
    if(/trident/i.test(M[1])){
        tmp=  /\brv[ :]+(\d+)/g.exec(uA) || [];
        return {name:'IE',version:(tmp[1] || '')};
    }
    if(M[1]=== 'Chrome'){
        tmp= uA.match(/\b(OPR|Edge)\/(\d+)/);
        if(tmp!= null) return {name:tmp[1].replace('OPR', 'Opera'),version:tmp[2]};
    }
    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
    if((tmp= uA.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tmp[1]);
    return {uA,name:M[0],version:M[1]};
})(window.navigator.userAgent);

document.getElementById('detalles').innerHTML = navigator.browserSpecs.uA;
result.innerHTML = 'You\'re using ' + navigator.browserSpecs.name  + ' ' + navigator.browserSpecs.version + ' Browser.';