2011-08-13 17 views
11

Im el desarrollo de un código JavaScript y quiero para determinar la versión y la marca del navegador del cliente, aquí está la pieza de código que estoy usando para ello:¿por qué "navigator.userAgent" en javaScript devuelve la cadena "Mozilla" cuando se prueba en un google cromo borwser?

var browserName ; 
function BrowserCheckin() 
{ 

    if(navigator.userAgent.indexOf("Mozilla") > 0) 
     browserName = "Mozilla" ; 
    if (navigator.userAgent.indexOf("MSIE") > 0) 
     browserName = "InternetExplorer"; 
    if (navigator.userAgent.indexOf("Chrome") > 0) 
     browserName= "Google Chrome" ; 
    if(navigator.userAgent.indexOf("Opera") > 0) 
     browserName = "Opera" ; 
    document.write("<h1>" + browserName + "</h1>") ; 
} 

pero cuando corro mi código utilizando "Google Chrome", la propiedad useAgent devuelve una cadena de containting:

"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, como Gecko) Chrome/12.0.742.112 Safari/534.30"

Pero no entiendo qué hace "Mozilla/5.0" allí, ¿alguien tiene alguna Idea?
(y una cosa más, yo uso Linux como mi sistema operativo)

Gracias de antemano :)

+5

Debería tener en cuenta la detección de características, en lugar de la detección del navegador, si desea habilitar/deshabilitar la funcionalidad. –

+0

@Damien_The_Unbeliever: lo investigaré, tienes razón :) si fuera una respuesta, lo habría elegido como la mejor respuesta :) gracias –

Respuesta

19

Para historical reasons, casi todos los navegadores (Opera), excepto anteponer Mozilla/ a su agente de usuario.

Por ejemplo, aquí hay algunos agentes de usuario comunes:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) 
      Chrome/12.0.742.112 Safari/534.30     # Chrome 12 
Mozilla/5.0 (X11; Linux x86_64) Gecko Firefox/5.0    # FF 5 
Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)  # IE 9 
Opera/9.80 (Windows NT 5.1; U; en) Presto/2.8.119 Version/11.10 # Opera 11.10 

Para una lista detallada, se refieren a onlinedatabases.

+0

gracias, tan rápido, pero no es el caso de Opera y IE. no tienen el 'Mozilla /' en su userAgent. –

+1

Sí, lo hacen. –

+0

@Delan Azabani: Es lo que ofrece Opera: Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.9.168 Versión/11.50 –

2

Esa es la cadena de agente de usuario para Chrome. Tiene Mozilla en el nombre por razones históricas. Aún más gracioso es cuando ve Mozilla en la cadena del agente de usuario para Internet Explorer :)

Este enlace tiene cadenas de caracteres UA para Chrome, puede que le resulte útil: http://www.useragentstring.com/pages/Chrome/.

Cuestiones relacionadas