2011-04-18 28 views
13

Enfrentando un problema, mi css tiene algún error cuando Firefox es menor que 2.0. Me gustaría detectar el navegador para arreglar mi error css.Detecta el navegador firefox con jquery

Este es mi código:

$(document).ready ( 
function() { 
    if ($.browser.mozilla == true && $.browser.version < '3.0') { 
    $('img.frameMargin').css('margin-left','35px'); 
    } 
} 
); 

Pero este código parece como no funciona.

Gracias por avanzar.

+2

Me gustaría mucho me gusta señalar que 'detección de características 'triunfa' detección del navegador' tanto en escalabilidad como en mantenibilidad. Creo que es posible que desee echar un vistazo a '$ .support.boxModel' en su lugar. –

+0

Ver el comentario de @ richardneililagan. La detección de funciones realmente es el camino a seguir aquí. Será más a prueba de futuro en caso de que los fabricantes de los navegadores cambien su formato de número de publicación. – joekarl

Respuesta

1

Usted tendría que hacer esto ...

$.browser.version < '1.9' 

FireFox 2 debe volver 1.8 ... así que esto pasará.

+2

jQuery api docs recomienda EN CONTRA usando $ .browser. http://api.jquery.com/jQuery.browser/ .. también es mejor usar la detección de funciones que consultar al agente de usuario del navegador que puede ser falso. $ .browser prueba para el agente de usuario ... la API jQuery dice que use $. soporte ... pero en este caso intente probar si window.mozInnerScreenX existe .. –

1

En mi máquina (Mac OS X 10.6), $.browser.version en Firefox 4 informes "2.0". Por lo tanto, parece que su código es válido, pero hay un problema con JQuery.

Desde el http://api.jquery.com/jQuery.browser/:

No recomendamos el uso de esta propiedad; intente utilizar la detección de características en su lugar (consulte jQuery.support).

Si necesita una detección de navegador confiable en Javascript, consulte uno de los muchos tutoriales en línea (como this one).

2

Acabo de toparme con este problema yo mismo. $ Browser.version realidad detecta la versión del motor de renderizado, y no la versión del navegador (a pesar de lo que su nombre indica), por lo que si desea detectar Firefox 4 y más tarde, se debe utilizar

$.browser.mozilla && $.browser.version > '2' 

Porque Firefox usa Gecko 2.0 como el motor de representación. Es bastante confuso, lo sé :)

29

Esto ya ha sido contestada en esta discusión: In Javascript, how do I determine if my current browser is Firefox on a computer vs everything else?

Para responder a su pregunta de ese puesto, gracias a "BalusC" por la respuesta:

var FF = !(window.mozInnerScreenX == null); 
if(FF) { 
    // is firefox 
} else { 
    // not firefox 
} 

Las publicaciones anteriores aconsejan usar jQuery.browser. Pero la API jQuery recomienda no usar este método ... (ver DOCS in API).

jQuery API recomienda utilizar 'jQuery.support' (http://api.jquery.com/jQuery.support/). La razón es que jQuery.browser usa el agente de usuario que se puede suplantar y en realidad está en desuso en las versiones posteriores de jQuery. Es mejor utilizar la detección de características en lugar de la detección del navegador.

UPDATE:

jQuery.browser ahora se elimina de jQuery partir de la versión 1.9

http://api.jquery.com/jQuery.browser/

si realmente hay que usarla .. jQuery.browser se ha portado como un plugin de jQuery separada

https://github.com/gabceb/jquery-browser-plugin

esperanza de que ayuda a

Cuestiones relacionadas