2010-02-24 14 views
33
if(firefox and is on a computer){ 
alert('using firefox on a computer') 
}else{ 
alert("using something else!"); 
} 

¿Cómo puedo hacer esto?En Javascript, ¿cómo puedo determinar si mi navegador actual es Firefox en una computadora frente a todo lo demás?

+2

¿Qué significa "está en una computadora significar"? ¿Desea detectar también iphones y otros deveces móviles? –

+1

¿Por qué quieres saber eso? – Gumbo

+2

porque q dice si firefox Y está en una computadora? El que está en una computadora debe ser importante de lo contrario no estaría allí ... después de todo es redundante de lo contrario. –

Respuesta

51

lo que está buscando que se conoce como la detección del navegador:

if ($.browser.mozilla) { ... 

Sin embargo, se desaconseja el rastreo del navegador, ya que es fácil burlar al agente del usuario, es decir, pretende ser otro navegador.

será mejor detección de características utilización, ya sea en su propio camino, oa través de la jQuery.support interfaz: http://api.jquery.com/jQuery.support/

He aquí un artículo sobre la extensión para su propio uso: http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/

Editar:

encontrado este post así que ayuda: When IE8 is not IE8 what is $.browser.version?

+1

¿Quieres decir desanimado? ;) +1 para la detección de características, hágalo de la manera correcta: http://www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ –

+0

@Marcel Korpel: ¡Jaja, gracias! –

+0

Me lo ganaste Marcel :) –

-7

Utilice una biblioteca real como jquery, etc., entonces realmente no debería tener que preocuparse por esto la mayor parte del tiempo.

+6

-1 - recomendar una biblioteca está bien, recomendar una biblioteca que ya figura en las etiquetas no tiene sentido, no describir cómo resolver el problema con dicha biblioteca es de poca ayuda. – Quentin

+0

Solo depender de una biblioteca en lugar de tratar de comprender el idioma en sí es algo malo. Debes saber algo de javascript también. – poo

+0

La detección del navegador no se trata exclusivamente de Javacript. Confunde el lenguaje y la plataforma con lo último que aloja la cadena de agente de usuario. –

-3

Puede usar navigator.userAgent para esto. Sólo hay que ver si contiene Mozilla

+4

Casi todo incluye la cadena * Mozilla * ... ¡incluyendo Safari en el iPhone! ¡Esto es inútil para determinar si se está usando Firefox, es inútil determinar si se está usando una computadora! – Quentin

+0

Eche un vistazo a http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string para obtener un historial detallado de la infame etiqueta * Mozilla *. –

1

Puede hacer que el control con de JavaScript navigator.userAgent o navigator objeto en general,

Pero si quieres usar algo listo para salir, cheque esto:

http://www.quirksmode.org/js/detect.html

espero que esto ayude, Sinan.

1

Es mejor detectar las características que necesita, no un navegador. Por ejemplo, si lo que necesita saber si es compatible con foo(), se puede comprobar si con (foo) {}

4
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.join(' '); 
})(); 

como su nombre indica, se trata de que el navegador dice lo es- pero la detección el uso de objetos antes de pedir a hacer nada en realidad ...

lo uso para los errores de registro de los usuarios y en el código de prueba en múltiples navegadores, donde conozco las cadenas userAgent.

10

Como esto: Compruebe si hay Firefox. O algún otro navegador.

window.onload = function() { 
      // alert(navigator.userAgent); 
      if (navigator.userAgent.indexOf("Firefox") > 0) { 
       alert("ff"); 
      } 
     } 
+0

Funciona para mi situación, gracias! – SlickRemix

1

Como ya he preguntado en un comentario: ¿por qué quiere esto? El rastreo del navegador es un mal hábito y solo hay algunas situaciones en las que es necesario.

En su lugar, use detección de características. Como described by Nicholas Zakas, debe probar características relativamente "poco comunes" antes de usarlas y solo confiar en estas pruebas, por lo que es un poco seguro.Por ejemplo, hacer

if (window.XMLHttpRequest) 
    var xhr = new XMLHttpRequest(); 

en lugar de

if ((brwsr.IE && brwsr.IE.version >= 7) || (brwsr.firefox) || (brwsr.opera)) 
    var xhr = new XMLHttpRequest(); 

Y también no hacer

if (window.XMLHttpRequest) 
    // Hey, native XMLHttpRequest-support, so position: fixed is also supported 

(en cambio, si se admite la prueba position: fixed) Existen

varios navegadores poco comunes con nombres como Kazehakase y Midori que también podrían, o no, ser compatibles con estas características, por lo que sus scripts trabajarán silenciosamente en ellas cuando usen la detección de características.

Pero lea el mentioned article, ya que contiene una explicación muy buena y detallada de esta técnica. (Por cierto, creo que Zakas 'Professional JavaScript for Web Developers es aún demasiado desconocido.)

+2

Sería bueno si esto siempre funcionara. Pero a veces tiene un caso donde las características se implementan de forma ligeramente diferente en diferentes navegadores, pero esta diferencia no se declara en una variable. Por ejemplo, estoy tratando de resolver el problema de que no se puede copiar el texto de los campos desactivados en Firefox, pero sí en cualquier otro navegador. Entonces necesito cambiar al uso del atributo readOnly en Firefox. No hay forma de detectar esto aparte de conocer al agente de usuario. – jsarma

30

Estoy haciendo algo como a continuación;

function checkBrowser(){ 
    c = navigator.userAgent.search("Chrome"); 
    f = navigator.userAgent.search("Firefox"); 
    m8 = navigator.userAgent.search("MSIE 8.0"); 
    m9 = navigator.userAgent.search("MSIE 9.0"); 
    if (c > -1) { 
     browser = "Chrome"; 
    } else if (f > -1) { 
     browser = "Firefox"; 
    } else if (m9 > -1) { 
     browser ="MSIE 9.0"; 
    } else if (m8 > -1) { 
     browser ="MSIE 8.0"; 
    } 
    return browser; 
} 
3
if (navigator.userAgent.indexOf("Firefox") != -1) { 

//some specific code for Mozilla 

} 
Cuestiones relacionadas