Il semble qu'il s'agisse d'un bogue dans certains scénarios, notamment ceux qui impliquent AJAX. Cet article présente les étapes à suivre pour le reproduire, mais ne donne aucune solution :
http://blog.darkthread.net/post-2011-03-19-ie9-ol-bug.aspx
Notez que l'article est en chinois ; je l'ai traduit avec Chrome.
Voici un travail qui montre qu'il est possible de mettre à jour dynamiquement une liste sans problème :
http://jsfiddle.net/6tr9p/18/
Malheureusement, cela ne résout pas le problème lorsqu'il est nécessaire de combiner AJAX/IE9/Listes ordonnées, ce qui est probablement le cas si le PO utilise SharePoint.
Après avoir passé plusieurs heures à résoudre ce problème moi-même, je peux confirmer (en dehors de SharePoint) qu'il s'agit bien d'un problème avec IE 9.0.8112 sur Windows 7. Il semble également avoir un impact sur les CSS counter-increment
pour la mise en œuvre des listes ordonnées également (c'est-à-dire que cela ne fonctionne pas ; les éléments de la liste sont toujours tous numérotés par zéro).
Je mettrai à jour ma réponse si je trouve une meilleure solution que "faire avec" / "supprimer AJAX".
EDIT : Voici ma "meilleure réponse".
Ce code n'a fait l'objet que de tests préliminaires et implique de se connecter à l'API AJAX côté client. Il peut se briser dans d'autres versions d'IE, ou dans d'autres navigateurs. Utilisez-le à vos risques et périls.
Cela dit, il corrige le comportement des listes ordonnées qui affichent tous les zéros dans IE9 avec des numéros de départ implicites et explicites définis (via l'attribut start). Notez que l'attribut start n'est plus déprécié en HTML 5.
function endRequest_OL_Fix(sender, args) {
var ols = document.getElementsByTagName("ol");
for (var i = 0; i < ols.length; i++)
{
var explicitStart = ols[i].start;
if (explicitStart > 0) {
ols[i].start = -1;
ols[i].start = explicitStart;
}
else {
ols[i].start = 1;
}
}
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest_OL_Fix);
Une fois la requête terminée (y compris une requête asynchrone), toutes les balises OL de la page sont examinées. Si elles ont une balise explicitement définie start
il sera conservé, réinitialisé et réaffecté. Dans le cas contraire, start
seront explicitement attribuées.
Cela oblige à redessiner et, avec les réserves susmentionnées, résout le problème.