Escenario:

Estos días he estado realizando una web pública http://www.boPlace.com para una aplicación de Windows Phone 7 que hemos desarrollado Alberto Díaz Martín y yo. Al probarla desde Visual Studio todo funciona perfecto. Se abre el Internet Explorer 9 que es el que tengo asociado y todo se ve correcto.

Ahora viene el problema. Hemos publicado la web desde un servidor interno que, por x motivos relacionados con Proxies, Firewalls,… para acceder al sitio, no puedo usar www.boPlace.com, sino que tengo que hacerlo con la ruta interna y… la cosa se pone fea (la web) porque se ejecuta en el modo de compatibilidad IE7. Como la web usa hojas de estilo que no son compatibles del todo con IE7… se ve muy mal, aunque como la gente que no está muy metida en el mundo de la informática no suele actualizar los navegadores (todavía quedan IE6 por ahí), habrá que hacer que se vea bien. Pero este no es el problema, el problema es… ¿por qué si accedo a la ruta local del sitio web, explorer se pone en modo compatibilidad?

 

Camino a la solución:

Después de realizar un pequeño brainstorming para darle lógica a esto… empiezo a probar.

  1. La aplicación está hecha con MVC3 y… en el Layout, el DOCTYPE lo pone vacío, es decir <!DOCTYPE>
    • PRUEBA: pues a probar si poniéndole un DOCTYPE válido funciona correctamente
    • RESULTADO: Meeeeck. Todo sigue igual =o(
  2. Los metas son muy útiles para ciertas cosas como la detección del navegador
    • BÚSQUEDA: ¿Habrá algún meta que deshabilite la visualización en modo Compatibilidad? ¡Sí!
    • PRUEBA: Pongo el meta siguiente <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    • RESULTADO: Meeeeck. Todo igual =o( Y van 2 intentos
  3. Configuración del IIS
    • BÚSQUEDA: ¿Habrá alguna configuración en el IIS del servidor que fuerce a ejecutarse en modo compatibilidad IE7? Podría ser que alguno de los sitios web que ya existen requieran esa configuración y esté forzándose. Pues… como IIS es fantástico, existe una forma de configurarlo, tal y como se explica en este artículo de Joel Varty
    • PRUEBA: Le pregunto al administrador de sistemas si tiene esa configuración.
    • RESULTADO: No está configurado nada de eso.
  4. ¡A tirarse de los pelos buscando la solución!
    • BÚSQUEDA: Tengo muchos pelos y… seguro que encuentro la solución antes de quedarme calvo.
    • PRUEBA: Bing + Google herramientas fundamentales… y encuentro la solución aquí justo en el momento en que el administrador de sistemas aparece por mi puesto.
    • SOLUCIÓN: Resulta que IE9 tiene marcado por defecto que los sitios de la intranet los ejecute en el Modo Compatibilidad…
      • Pasos a seguir
        1. En IE9 ir a “Tools” en mi caso o “Herramientas”.
        2. Seleccionar “Compatibility View Settings” en mi caso o “Opciones de la vista de compatibilidad” (creo)
        3. Desmarcar la opción “Display intranet sites in Compatibility View”.

Esto es todo. Espero que a alguien le ahorre el tiempo que perdí intentando encontrar la solución.