Share via


Preparándose para IE8

Algunos meses atrás durante la conferencia MIX se presentó la Beta 1 de Internet Explorer 8. Como contaba en aquel momento, se trata de un preview lanzado de manera temprana para que los desarrolladores y diseñadores web pudieran comenzar a probarlo y aportar su feedback.

Desde entonces, probablemente uno de los temas que más controversia ha generado es el “Modo Standard” activado por defecto.

Modo Standard

Desarrollar sitios Web no es una tarea sencilla, pero menos sencillo es aún testearlos.

Por un lado existen múltiples tecnologías con las cuales se desarrolla: CSS, DHTML, Javascript, Silverlight , Flash. Esto hace complicado la automatización de nuestras pruebas y como resultado muy pocas veces se realizan en profundidad.

Reproducir el escenario real en el cual la aplicación correrá tampoco es sencillo. Aún cuando hagamos pruebas de stress o carga, es muy difícil contemplar el caso real donde contamos con múltiples usuarios accediendo desde cualquier lugar del mundo (basta con ver el caso de twitter).

Pero probablemente el mayor inconveniente a la hora de testear aplicaciones es la existencia de múltiples navegadores. Una vez que contamos con nuestra aplicación terminada y funcionando, debemos validar que funcione y se vea correctamente en cada uno de los navegadores más populares del mercado: IE, Firefox, Safari, Opera, etc.

A qué se debe este problema?

A que la mayoría de los navegadores no sigue de manera estricta los estándares Web definidos por la W3C. Al lanzarse la beta 1 de IE8, supimos que soportaba las pruebas CSS llamadas ACID2. Sin embargo hasta ese momento pocos navegadores lo hacían. De hecho versiones anteriores de IE no lo hacían, y también tenían muchos problemas soportando otros estándares. Les muestro un breve ejemplo:

if (window.XMLHttpRequest)     
{
        request = new XMLHttpRequest();     // Firefox, Safari, IE7...
}
else
if (window.ActiveXObject)   // versión ActiveX
{
       request = new ActiveXObject("Microsoft.XMLHTTP");    // IE5.x || IE6
}

Eso significó que los desarrolladores debimos adaptarnos al “standard” que cada navegador definía, sin seguir al standard real.

De esta manera el equipo de IE tuvo que tomar una difícil decisión. Apegarse estrictamente a los standares definidos, aún cuando sitios creados en versiones anteriores de IE no funcionaran correctamente.

Una difícil decisión, pero en mi opinión muy acertada. Además de que Microsoft tiene un compromiso con mantener una política de interoperabilidad, IE es el browser más utilizado del mercado. Por ello es muy importante que la historia se reescriba, pero esta vez apegándonos estrictamente a los estándares que el mercado define.

Como adaptar nuestros sitios a IE8

Tal como se explica en el post del equipo de IE, la forma recomendada de adaptar nuestros sitios a IE8, es corrigiendo el HTML y CSS de los mismos para que éstos respeten los estándares que IE ahora sí soporta. Sin embargo esto puede ser muy costoso y tomar mucho tiempo.

Por ello, IE8 soporta un modo de compatibilidad con IE7:

image 

De esta manera los sitios que estaban diseñados para IE7, pueden seguir funcionando correctamente. Sólo debemos indicar en nuestros sitios que queremos trabajar en esta modalidad.

Para ello al momento se han desarrollado dos formas de indicarlo:

  • Por cada sitio, podemos agregar un encabezado HTTP:

X-UA-Compatible: IE=EmulateIE7

  • Por cada página, podemos agregar un tag HTML dentro del tag <head>

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Nota: IE8 aún se encuentra en Beta, con lo cual esta solución podría modificarse en la versión final.

Es posible aplicar la primer solución configurando sólo el servidor web sin necesidad de tocar nuestras aplicaciones. Les comparto links con instrucciones de cómo agregar encabezados HTTP en IIS7.0, IIS6.0, Apache 2.2, Apache 2.0, Apache 1.3.

Los invito a ver el blog del equipo de IE para conocer más novedades. En particular es muy interesante el trabajo que se está realizando en materia de seguridad: https://blogs.msdn.com/ie

Saludos!