Récemment, un collègue a utilisé le contrôle Menu d'asp.net 2.0, qui est l'un des contrôles de navigation d'asp.net 2.0. Récemment, j'ai découvert un problème et placé ce contrôle dans la page maître. Ensuite, une page utilise la page maître
. que lorsque la page est chargée, ce n'est pas fini. Lorsque vous cliquez rapidement sur le menu, une erreur spécifique à IE sera signalée.
Après une recherche sur Google, il existe de nombreuses erreurs comme celle-ci. Certaines personnes ont également rencontré des erreurs similaires lors de l'utilisation du menu asp.net.
http://forums.asp.net/thread/1158791.aspx
http://forums.asp.net/thread/1159962.aspx
Des programmes similaires peuvent être parcourus avec Firefox mais il n'y a aucun problème. Ce problème avec IE est en fait un problème. erreur très courante, cela se produit généralement lorsque le document n'a pas été chargé et qu'un script modifie dynamiquement l'état du document,
j'ai regardé le code qu'il génère automatiquement dans Asp.net. en fait, c'est un fichier js. Il contient un code similaire
if (!childFrame) {
childFrame = document.createElement("iframe");
childFrame.id = childFrameId;
childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank");
childFrame.style.position = "absolu" ;
childFrame.style.display = "aucun";
childFrame.scrolling = "non";
childFrame.frameBorder = "0";
if (parent.tagName.toLowerCase() == "html") {
document.body.appendChild(childFrame);
}
autre {
parent.appendChild(childFrame);
}
}
Haha
, il existe bien un code appendchild dynamique. En fait, cette approche n'est pas rigoureuse. Les codes écrits par MS ignorent parfois certains problèmes.
Et si le document n'a pas encore été chargé et que l'appendchild est déclenché ?
sera l'occasion de la concurrence. C'est similaire à la synchronisation des threads. C'est pourquoi IE signalera une erreur sur la modification de l'état du document.
Comment le modifier ensuite ?
1. Vous pouvez mettre le menu dans un div, définissez d'abord la visibilité sur cachée.
2. Une fois le document chargé, définissez la visibilité sur visible
document.onreadystatechange=ShowMenu ;
fonction ShowMenu()
{
si(document.readyState=="complet")
{
document.getElementById("DivOfMenu").style.visibility="visible"
}
}
C'est ça.
http://www.cnblogs.com/montaque/archive/2006/09/18/507639.html