Datos personales

Mi foto
Colonia Caroya, Córdoba, Argentina
Ingeniero en Sistemas de Información

29 noviembre 2009

Control asp:menu no muestra menús emergentes en Internet Explorer 8


Me encontraba desarrollando en una maquina virtual con Visual Studio 2008 sobre Windows XP, un pequeño y simple sitio en ASP.Net 2.0 donde todo funcionaba razonablemente bien, cuando en un momento de irracionalidad acepte actualizar el IE7 por el IE8....

Al principio todo estaba en orden, hasta que...

Ejecute mi proyectito Web, y en lugar de ver esto:


Vi esto:


Como veran.. o mejor dicho como no veran, en vez de un menu emergente, solo veia un rectángulo blanco... jolín.. que habia pasado aquí?

Luego de las revisaciones basicas sobre el código y encontrar todo correcto, pues no es el gran codigo el de un menu, recurri al gran San Google que todo lo sabe, para que ilumine un poco esta alma en pena...

Lo primeras pistas que encontre decian que si activamos el modo de compatibilidad del IE8, el menu funcionaba, y de hecho es asi... y lo cual es mas que correcto porque al activar esa funcionalidad por medio del icono de una hoja rota al lado de la barra de direcciones, el IE8 pasa a usar el Motor de renderizado del IE7.

Aunque asi funcionaba todo nuevamente, no es para nada comodo andar dandole a ese boton cada vez que alguien quiere usar los menus en la pagina, ademas que siendo IE8 y ASP.Net, parientes muy cercanos, algo asi como primos hermanos, uno espera que lo que generemos con Visual Studio sea mas que compatible con IE, sobro todo con la ultima version.

Hilando un poco mas fino, en busca de una solución mas "profesional" y ya que estabamos responsables de ese funcionamiento incorrecto, encontré ambas cosas...

Luego de lanzarse la pelota entre el equipo de desarrollo del IE y el equipo de Visual Studio, este ultimo acepto que el control menu estaba haciendo una mala presuncion del valor por defecto para el z-index, asi que tuvo que generar un parche para corregirlo.

El hotfix lo puede descargas de:


Y esta historia.. tuvo final feliz...

Que tengan un lindo día.

Marce

2 comentarios:

Katty dijo...

Gracias por la ayuda. Me sirvió :)

Jorge A. Ramira dijo...

El tema es que Visual Studio va a generar cosas que se vean bien "A la IE6" (con amor IE7). Es decir: cero estándares. Los controles de servidor de ASP.NET son totalmente anti-estándares. Existe una solución llamada CSSFriendly que modifica el renderizado HTML de los controles para hacerlos compliant. Si no querés llegar a eso, podés indicarle a tus páginas que querés que utilicen el renderizado de compatiblidad con IE7 en forma automática, hasta tanto hagas compatibles tus controles. Para eso, miráte este web site de la MSDN. ¡Saludos!