mardi 27 avril 2010

Contrôle Menu ASP.NET ne fonctionne plus correctement avec IE 8

Depuis la sortie de la version 8 de Microsoft Internet Explorer, un problème est apparu avec le contrôle Web "Menu" dans ASP.NET 2.0. La portion dynamique du menu, qui utilise du code JavaScript, ne s'affiche plus et est remplacée par un carré blanc. Il s'agit principalement d'un bogue d'interprétation de la valeur CSS par défaut du "z-index" par le menu puisque la nouvelle version d'IE (en mode standard) ne gère plus cela comme auparavant. Plus précisément, "(element).currentStyle.zIndex" retourne maintenant "auto" au lieu d'une valeur numérique, lorsqu'il n'y a pas de propriété "z-index" de spécifiée.

Il suffit de forcer le navigateur en mode compatibilité (IE 7) pour que le menu fonctionne à nouveau correctement. Évidemment, ce n'est pas une solution adéquate et ce n'est pas directement le navigateur qui est en cause, mais bien le code serveur (ressources) utilisé par le menu.

Pour régler le problème, il faut installer une mise à jour sur son poste de développement (si besoin pour les tests) ainsi que sur le serveur Web où est publié le site ASP.NET qui utilise le contrôle Menu. Cette mise à jour n'est pas disponible par Windows/Microsoft Update et il faut la télécharger et l'installer manuellement. Le dernier Service Pack de Windows doit être déjà installé dans certains cas pour que cela fonctionne correctement.

Le correctif (Patch/Hotfix) est disponible à l'adresse suivante : http://support.microsoft.com/kb/962351

Si vous ne désirez/pouvez pas appliquer la mise à jour ci-dessus, voici une solution de contournement : http://weblogs.asp.net/mhildreth/archive/2009/01/26/testing.aspx

Note : Le contrôle Menu a été réécrit avec ASP.NET 4.0 et le problème n'existe plus. Il utilise une syntaxe HTML/CSS/JavaScript plus respectueuse des standards et il devrait fonctionner adéquatement avec toutes les versions des navigateurs récents.

Source : http://weblogs.asp.net/bleroy/archive/2009/03/23/asp-menu-fix-for-ie8-problem-available.aspx

Aucun commentaire:

Publier un commentaire