viernes, 28 de marzo de 2008

La pesadilla de los programadores y diseñadores

Nos contaba hace un par de días Blanca Salvatierra en un artículo la existencia de una página web que instaba a los usuarios del navegador Internet Explorer 6 a actualizarse o cambiar de navegador.

Realmente es un dolor tener que desarrollar páginas web que se vean bien en todos los navegadores. Aunque la mayoría de los diseñadores y programadores ya se saben los "trucos" para conseguirlo, no deja de ser una gran pérdida de tiempo y esfuerzo.

A día de hoy, los lectores de Público.es utilizan cinco navegadores principalmente (porcentajes aproximados): Internet Explorer 7 (~ 30 % de los usuarios) , Internte Explorer 6 (~ 30%), Mozilla Firefox (~ 30%), Apple Safari (~ 2%) y Opera (~1%).

De estos cinco navegadores, el Internet Explorer 6 (abreviado como IE6) es el menos compatible, para que una página que se ve bien en el resto se vea en IE6 muchas veces hay que recurrir a trucos y "chapucillas".

¿Cómo puede ser ésto? Las páginas web actualmente se basan (principalmente) en tres "lenguajes" con funciones diferenciadas, todos ellos estandarizados por organizaciones de internacionales: HTML, CSS y JavaScript.
El lenguaje HTML es el que contiene el texto o contenido significativo de una página web, el CSS se encarga de formatear y dar estilo a este texto. Finalmente, con JavaScript podemos hacer que el usuario interaccione con una página web de diferentes formas.

El problema es que en teoría todos los navegadores soportan estos tres lenguajes, pero en la práctica, cada uno lo hace a su manera, y de todos ellos, el IE6 es el que más extraño se comporta.

Supongamos que tenemos el siguiente fragmento de HTML (simplificado):

Prueba con HTML





Título del documento





Listado de palabras



  • Palabra 1

  • Palabra 2

  • Palabra 3

  • Palabra 4

  • Palabra 5




Esto es un párrafo de texto, párrafo de texto,
párrafo de texto,párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto.
Esto es otro párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto, párrafo de texto,
párrafo de texto, párrafo de texto.



Esto es un texto en el pie de la página.





Este documento se vería así en los distintos navegadores (pulsar para ampliar):

Captura navegadores sin estilos

No hemos especificado ningún estilo, así que los navegadores formatean el texto como les parece, aunque el resultado es muy parecido en todos los casos.

Ahora establecemos que este HTML utilice el siguiente CSS que lo formateará. Este CSS es bastante ingenuo, ya que no tiene en cuenta las peculiaridades de los distintos navegadores. Lo que pretende es establecer una página centrada, con una cabecera gris, un cuerpo azul con dos columnas, verde y amarilla y un pie de página rojo:
#contenedor {
border: solid 1px black;
padding: 10px;
width: 750px;
margin: 0 auto;
}
#cabecera {
background-color: gray;
width: 730px;
}
#cuerpo {
background-color: blue;
width: 730px;
}
#pie {
background-color: red;
width: 730px;
}
#colizda {
width: 180px;
background-color: green;
float: left;
padding: 10px;
}
#coldcha {
width: 510px;
background-color: yellow;
float: left;
padding: 10px;
}

Las diferencias entre navegadores son notorias:





















ff-antes.pngMozilla Firefox
opera-antes.pngOpera
safari-antes.pngSafari
ie7-antes.pngExplorer 7
ie6-antes.pngExplorer 6

Hacemos algunos ajustes adicionales conseguimos al fin que en todos se vea igual:
body {
/* Para centrar en IE6 */
text-align: center;
}
p, ul {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
#contenedor {
margin: 0 auto;
width: 770px;
}
#contenido {
border: solid 1px black;
padding: 10px;
width: 750px;
/* Para expandir la capa hacia abajo en
Safari, Opera y Firefox */
float: left;
/* Para compensar el apaño de IE6 en body */
text-align: left;
}
#cabecera {
background-color: gray;
float: left;
width: 750px;
}
#cuerpo {
background-color: blue;
float: left;
width: 750px;
}
#pie {
background-color: red;
float: left;
width: 750px;
}

Y éste es el resultado:





















ff-despues.pngMozilla Firefox
opera-despues.pngOpera
safari-despues.pngSafari
ie7-despues.pngExplorer 7
ie6-despues.pngExplorer 6

Lo más chocante es que para que en IE6 se vea la página centrada tenemos que establecer una propiedad ilógica: que el texto en la etiqueta "body" esté centrado (text-align: center;)
Por otra parte, los dos Internet Explorer expanden y muestran la capa contenedora de las columnas (fondo azul), mientras que en los demás hay que hacerla visible explícitamente.

En general el comportamiento de IE7, Firefox, Opera y Safari es muy similar, los problemas siempre los suele dar el IE6.

Se comprende entonces que los diseñadores de páginas web estén hartos del Explorer 6 y su peculiar forma de interpretar los estándares.

Créditos: gracias a Daniel Solana Tacón, diseñador web de Público por ayudarme con estos CSS.

9 comentarios:

  1. El problema es que el IE6 es de MS, lo sigue teniendo un montón de gente, incluyendo un montón de redes corporativas y de administraciones públicas... si fuera el navegador de Abrazafarolas Inc. ya lo habrían expulsado del mercado.En Barrapunto había una discusión sobre el asunto, donde algunos usuarios, muy en serio, defendìan que si ellos ven bien las páginas, a santo de qué van a actualizarse ni leches, por hacerle un favor a los desarrolladores. Que se j.., los desarrolladores.O sea, que la culpa la vais a acabar teniendo los desarrolladores y administradores de paginas web, por cultivar a estos usuarios poniendoles la vida fácil.... Sí, ya sé que no teneis más remedio. Es la pescadilla que se muerde la cola.

    ResponderEliminar
  2. No te falta ni pizca de razón Aloe, por un lado la gente que sigue navegando con IE6 porque ve bien las páginas, por otro lado nosotros, que seguimos optimizando las páginas para que todo el mundo las vea bien.Mira que yo soy bastante ''rebelde'' en este sentido y pienso que IE6 debería desaparecer de la faz de la tierra. Y al mismo tiempo pienso que si no les da la gana actualizar su navegador o pasarse a otro tampoco les puedes poner una pistola en la cabeza ni boicotearles dejando de optimizar las páginas. En mi caso estoy más que acostumbrado a hacerlo, y ya no me cuesta nada optimizar, normalmente con CSS.En todo caso, puedo decirte que muchas veces si algún elemento me da muchos problemas en IE6, lo dejo como está. Normalmente suelen ser cosas que no afectan a la navegabilidad del sitio, pero sí en pequeñas cosas que verías mucho mejor en otro navegador.No es mucho, pero al menos contribuyo a que aquellos que usen IE6 se piensen usar otro navegador.De todas formas más temprano que tarde desaparecerá o quedará en desuso.Un saludete!

    ResponderEliminar
  3. Me considero un maquetador notable (que no sobresaliente ;) y suscribo el ''infierno'' que supone maquetar para IE y en particular para el IE6. No obstante, y como también se explica en el artículo, existen varias soluciones y no supone un problema técnico, sino económico.Económico puesto que si yo tuviera que hacer mi trabajo simplemente respetando los estándares internacionales aprobados, no tendría que repercutir a mis clientes cada una de las adaptaciones que hay que hacer para cada navegador. Vamos: más navegadores = más trabajo = más coste.Así que imaginaros cuando llega un cliente y dice que hay que hacer compatible una web con Firefox, IE 7, 6, 5.5 y 5, Opera y Safari, y que debe cumplir los estándares del W3C (HTML, CSS y WAI [accesibilidad])... Me entra la risa floja :DLamentablemente, este problema no sólo ocurre con los navegadores.Microsoft, en una perenne batalla con el resto del mundo y gracias a su monopolio en el mundo del PC, decide que su forma de hacer las cosas es siempre mejor y que los que vienen por detrás se aguanten. El que manda... manda.

    ResponderEliminar
  4. Me lo dices o me lo cuentas?Actualmente estoy desarrollando una intranet para un colegio, en él todos los ordenadores tienen IE6, y el ordenador que uso para programar tiene Windows Vista, con lo que no puedo ver el contenido como queda en IE6. Y aquí estoy, cada vez que escribo cuatro líneas de estilo, las tengo que subir al server y conectarme al ordenador del director a través del VNC para ver como queda, ridículo y una pérdida de tiempo. Les comenté que se actualizaran a la versión 7 pero resulta que su sistema operativo es Windows XP Unnatended Edition más piratón que no he visto y el ''programa de ventajas para windows original'' no permite la actualización. Entonces les dije: ''Poneros Firefox'', ''Fire ¿qué?'' (...) Lo que me parece más penoso que muchos diseñadores (que no programadores) al final acaban recurriendo a Flash para asegurarse de que se ve bien en todos los navegadores, y cobran un disparate por un diseño que es poco accesible, además de que no suelen tener en cuenta el tema de buscadores. Por supuesto, con Flash se puede diseñar accesible, pero para poder antes hay que querer.Es una pena que pongas ''páginas web'' en google y aparezca gente que te hace una web por 8 euros y llegues tú y pases un presupuesto que en algunos casos llega a las 4 cifras y que, ni de lejos, paga el tedioso trabajo de programar webs accesibles y compatibles. Encima les estas cobrando caro...Bueno, pos ya está, ya me he desquitado, me quedo con la frase de Tolo: ''El que manda... manda''Saludos

    ResponderEliminar
  5. Ruben, existe un programa con el que puedes tener instalado en tu ordenador tanto el explorer 6 como el 7 y así poder hacer las pruebas sin necesidad de estar conectándote a otro ordenador. El programa se llama Multiple IE y lo puedes bajar de http://tredosoft.com/Multiple_IE

    ResponderEliminar
  6. A raíz de esto, la web de Publico tarda mucho en cargar tanto en IE7 como en firefox.Sabéis a qué se debe?

    ResponderEliminar
  7. Diego:Rara es la página web de un periódico que carga rápido: piezas de vídeo, última hora, publicidad, gráficas, fotos, flash, scripts, ...Si de mi dependiese, la hacía en html plano y sin estilos :-PEstamos ampliando la infraestructura informática y hemos introducido Akamai, se debería haber notado una mejoría en las últimas semanas.Un saludo.

    ResponderEliminar
  8. Rubén:Como bien indica dagi3d, el Multiple_IE es una solución muy buena para el problema que tienes.Yo tengo una máquina virtual (*) con los cinco navegadores que menciono en el artículo y me resulta muy cómodo: tengo aislado el entorno de pruebas del entorno de trabajo (Linux) y puedo también tener distintos perfiles (una máquina con XP, otra con Win 98, otra con Linux, etc) para hacer pruebas.(*) Innotek Virtual Box (http://www.virtualbox.org/)

    ResponderEliminar
  9. Gracias a todos por las sugerencias!Siempre había desconfiado de los ''emuladores'' de máquinas rollo virtual pc y demás, pero este tiene buen aspecto. Solo me falta tener un disco duro más grande (y yo que pensaba ''con 200Gb tengo de sobra''). Además corre OSX, que estoy bastante interesado en ello (hasta ahora tenía OSX en un HD USB, con lo lento que ello es)A todo esto.. a mi Público me carga rapidísimo, en comparación a otros periódicos. No creo que sea tema de caché, ya que la tengo desactivada. Además, os tengo en la barra de marcadores de Firefox como feed rss y va al pelísimo pelo.Saludos

    ResponderEliminar