04 julio, 2008

Los peligros de detectar el navegador

Via Simon Willison. La gente de Opera describe en este post el tremendo problema con el que han tenido que tratar y por qué es una pésima idea detectar el navegador para evitar un bug.

Al liberar la versión 9.5 de Opera, vieron que el famoso componente TinyMCE actuaba de forma caótica. Siguiendo la pista al código descubrieron que por culpa de un bug en la versión 9.2, sus programadores detectaban si se trataba de ese navegador (sin tener en cuenta la versión) para introducir unos párrafos en orden inverso al que sería lógico.

Para cumplir con el test de Acid3 y ponerse al día, Opera resolvió el bug de la versión 9.2, consiguiendo así que la excepción introducida en el TinyMCE se ejecutase sobre un navegador que ya había resuelto el bug. El resultado es que con la versión 9.5, al pulsar intro, los pàrrafos se ordenaban de forma totalmente aleatoria.

El dilema era elegir entre romper el TinyMCE con Opera 9.5 o desistir en su intento de cumplir con Acid3. De momento lo han resuelto parcialmente haciendo que los programadores del componente detecten también la versión, aunque posiblemente haya gente que nunca actualice su versión del TinyMCE y le funcione mal siempre.

Moraleja

Jamás hay que detectar el navegador para rodear un problema. Si no hay más remedio habría que jugar también con los números de versión por si en una futura resuelven el problema. Pero la forma correcta de hacerlo es detectar el bug. Es decir, introducir código que compruebe si el navegador tiene el problema concreto que se quiere rodear y actuar en consecuencia. De esa forma, cuando aparezca una versión de ese navegador que deje de tener el problema, los usuarios sólo verán que todo sigue funcionando perfectamente.

Publicar un comentario en la entrada

Últimos links en indiza.com