Como detectar a versão do meu navegador e sistema operacional usando JavaScript?

Eu tentei usar o código abaixo, mas ele só exibe resultados no Chrome e Mozilla não está funcionando no IE6.

txt = "

Browser CodeName: " + navigator.appCodeName + "

"; txt+= "

Browser Name: " + navigator.appName + "

"; txt+= "

Browser Version: " + navigator.appVersion + "

"; txt+= "

Cookies Enabled: " + navigator.cookieEnabled + "

"; txt+= "

Platform: " + navigator.platform + "

"; txt+= "

User-agent header: " + navigator.userAgent + "

"; document.getElementById("example").innerHTML=txt;

Saída:

 Browser CodeName: Mozilla Browser Name: Netscape Browser Version: 5.0 (Windows) Cookies Enabled: true Platform: Win32 User-agent header: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0 

Preciso obter a versão “Firefox / 12.0” apenas.

    Detectando detalhes do navegador:

     var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10); var nameOffset,verOffset,ix; // In Opera, the true version is after "Opera" or after "Version" if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5); } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) { browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion,10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } document.write('' +'Browser name = '+browserName+'
    ' +'Full version = '+fullVersion+'
    ' +'Major version = '+majorVersion+'
    ' +'navigator.appName = '+navigator.appName+'
    ' +'navigator.userAgent = '+navigator.userAgent+'
    ' )

    JavaScript de origem : nome do navegador .
    Veja JSFiddle para detectar detalhes do navegador .

    Detectando o SO:

     // This script sets OSName variable as follows: // "Windows" for all versions of Windows // "MacOS" for all versions of Macintosh OS // "Linux" for all versions of Linux // "UNIX" for all other UNIX flavors // "Unknown OS" indicates failure to detect the OS var OSName="Unknown OS"; if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; document.write('Your OS: '+OSName); 

    JavaScript de origem : detecção do SO .
    Veja JSFiddle para detectar detalhes do sistema operacional .

      var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion,10); var nameOffset,verOffset,ix; // In Opera, the true version is after "Opera" or after "Version" if ((verOffset=nAgt.indexOf("Opera"))!=-1) { browserName = "Opera"; fullVersion = nAgt.substring(verOffset+6); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In MSIE, the true version is after "MSIE" in userAgent else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset+5); } // In Chrome, the true version is after "Chrome" else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset+7); } // In Safari, the true version is after "Safari" or after "Version" else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { browserName = "Safari"; fullVersion = nAgt.substring(verOffset+7); if ((verOffset=nAgt.indexOf("Version"))!=-1) fullVersion = nAgt.substring(verOffset+8); } // In Firefox, the true version is after "Firefox" else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { browserName = "Firefox"; fullVersion = nAgt.substring(verOffset+8); } // In most other browsers, "name/version" is at the end of userAgent else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) { browserName = nAgt.substring(nameOffset,verOffset); fullVersion = nAgt.substring(verOffset+1); if (browserName.toLowerCase()==browserName.toUpperCase()) { browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix); if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix); majorVersion = parseInt(''+fullVersion,10); if (isNaN(majorVersion)) { fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion,10); } document.write('' +'Browser name = '+browserName+'
    ' +'Full version = '+fullVersion+'
    ' +'Major version = '+majorVersion+'
    ' +'navigator.appName = '+navigator.appName+'
    ' +'navigator.userAgent = '+navigator.userAgent+'
    ' ) // This script sets OSName variable as follows: // "Windows" for all versions of Windows // "MacOS" for all versions of Macintosh OS // "Linux" for all versions of Linux // "UNIX" for all other UNIX flavors // "Unknown OS" indicates failure to detect the OS var OSName="Unknown OS"; if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; document.write('Your OS: '+OSName);

    Estou triste em dizer: Estamos sem sorte com isso.

    Gostaria de encaminhá-lo para o autor de WhichBrowser : Everybody lies .

    Basicamente, nenhum navegador está sendo honesto. Não importa se você usa o Chrome ou o IE, ambos dirão que são “Mozilla Netscape” com suporte ao Gecko e Safari. Tente você mesmo em qualquer um dos violinos voando por aí neste segmento:

    violino de hims056

    O violino de Hariharan

    ou qualquer outro … Experimente com o Chrome (que ainda pode ter sucesso), tente com uma versão recente do IE, e você vai chorar. É claro que existem heurísticas para acertar, mas será tedioso compreender todos os casos de limites e, muito provavelmente, eles não funcionarão em um ano.

    Pegue seu código, por exemplo:

     

    Chrome diz:

    Código do NavegadorName: Mozilla

    Nome do Navegador: Netscape

    Versão do navegador: 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como o Gecko) Chrome / 40.0.2214.115 Safari / 537.36

    Cookies habilitados: true

    Plataforma: Win32

    Cabeçalho do agente do usuário: Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, como o Gecko) Chrome / 40.0.2214.115 Safari / 537.36

    IE diz:

    Código do NavegadorName: Mozilla

    Nome do Navegador: Netscape

    Versão do navegador: 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Centro de mídia PC 6.0; .NET4.0C; .NET4 .0E; InfoPath.3; rv: 11.0) como Gecko

    Cookies habilitados: true

    Plataforma: Win32

    Cabeçalho do agente de usuário: Mozilla / 5.0 (Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4). 0C; .NET4.0E; InfoPath.3; rv: 11.0) como o Gecko

    Pelo menos o Chrome ainda tem uma string que contém “Chrome” com o número exato da versão. Mas, para o IE, você deve extrapolar as coisas que ele suporta para realmente descobrir (quem mais gostaria que eles suportam o .NET ou o Media Center : P) e, em seguida, combiná-lo com o rv: no final para obter a versão número. É claro que até mesmo essas heurísticas sofisticadas podem muito provavelmente falhar assim que o IE 12 (ou o que elas quiserem chamar) aparecer.

    O script do PPK é a autoridade para esse tipo de coisa, como disse o @Jalpesh, isso pode apontar você da maneira correta

     var wn = window.navigator, platform = wn.platform.toString().toLowerCase(), userAgent = wn.userAgent.toLowerCase(), storedName; // ie if (userAgent.indexOf('msie',0) !== -1) { browserName = 'ie'; os = 'win'; storedName = userAgent.match(/msie[ ]\d{1}/).toString(); version = storedName.replace(/msie[ ]/,''); browserOsVersion = browserName + version; } 

    Extraído de https://github.com/leopic/jquery.detectBrowser.js/blob/sans-jquery/jquery.detectBrowser.sansjQuery.js

    Existe uma biblioteca para essa finalidade: https://github.com/bestiejs/platform.js#readme

    Então você pode usar dessa maneira

     // example 1 platform.os; // 'Windows Server 2008 R2 / 7 x64' // example 2 on an iPad platform.os; // 'iOS 5.0' // you can also access on the browser and some other properties platform.name; // 'Safari' platform.version; // '5.1' platform.product; // 'iPad' platform.manufacturer; // 'Apple' platform.layout; // 'WebKit' // or use the description to put all together platform.description; // 'Safari 5.1 on Apple iPad (iOS 5.0)' 

    Para detectar o sistema operacional usando JavaScript, é melhor usar navigator.userAgent em vez de navigator.appVersion

     { var OSName = "Unknown OS"; if (navigator.userAgent.indexOf("Win") != -1) OSName = "Windows"; if (navigator.userAgent.indexOf("Mac") != -1) OSName = "Macintosh"; if (navigator.userAgent.indexOf("Linux") != -1) OSName = "Linux"; if (navigator.userAgent.indexOf("Android") != -1) OSName = "Android"; if (navigator.userAgent.indexOf("like Mac") != -1) OSName = "iOS"; console.log('Your OS: ' + OSName); } 

    Tente este..

     // Browser with version Detection navigator.sayswho= (function(){ var N= navigator.appName, ua= navigator.userAgent, tem; var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?']; return M; })(); var browser_version = navigator.sayswho; alert("Welcome to " + browser_version); 

    confira o violino de trabalho ( aqui )

    Para o Firefox, Chrome, Opera, Internet Explorer e Safari

     var ua="Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)"; //ua = navigator.userAgent; var b; var browser; if(ua.indexOf("Opera")!=-1) { b=browser="Opera"; } if(ua.indexOf("Firefox")!=-1 && ua.indexOf("Opera")==-1) { b=browser="Firefox"; // Opera may also contains Firefox } if(ua.indexOf("Chrome")!=-1) { b=browser="Chrome"; } if(ua.indexOf("Safari")!=-1 && ua.indexOf("Chrome")==-1) { b=browser="Safari"; // Chrome always contains Safari } if(ua.indexOf("MSIE")!=-1 && (ua.indexOf("Opera")==-1 && ua.indexOf("Trident")==-1)) { b="MSIE"; browser="Internet Explorer"; //user agent with MSIE and Opera or MSIE and Trident may exist. } if(ua.indexOf("Trident")!=-1) { b="Trident"; browser="Internet Explorer"; } // now for version var version=ua.match(b+"[ /]+[0-9]+(.[0-9]+)*")[0]; console.log("broswer",browser); console.log("version",version);