javascript - Detektera orsaken till IEs problem med Operation Aborted
Min webbplats drabbas av felet Operation Aborted. Det jag tycker är konstigt är att felet i mitt fall bara ibland inträffar. Webbplatsen har fungerat bra i tre månader och först idag börjar det hända, men inte varje gång.
Sidan där detta inträffar är ganska stor med många tredjepartskontroller. Vad jag skulle vilja ha är ett verktyg som kan identifiera var felet inträffar. Det verkar som det bästa jag kan göra är att hitta det första JavaScript-felet som uppstår efter att operationen avbröts; dock hjälper detta inte så mycket. Detta fel beror på att ett element i DOM:en inte är tillgängligt, vilket jag skulle förvänta mig eftersom IE slutade tolka HTML.
Har någon några idéer eller knep för att begränsa detta?
Redigera
Jag uppskattar ytterligare sätt att lösa problemet; dock är det jag letar efter ett sätt att identifiera vilket skript som orsakar problemet.
Slutgiltig redigering
Efter att ha bytt till IE8 kunde jag fastställa att orsaken var AjaxControl Toolkits modala popup-dialog. Det fanns inget konkret sätt att avgöra detta vilket var nedslående, men debuggern lät mig se var det gick fel vilket var mycket konsekvent. Eftersom det inte finns något sätt i kontrollen att instruera den att flytta sin initialisering, inaktiverade jag den och har skriptet för att skapa klientkontrollen i min händelsehanterare för dokumentets laddning.
Detta problem är inte kontrollens fel, det uppstod eftersom innehållet för popupen faktiskt finns i ett andra formulär. Ärligt talat är jag förvånad att det någonsin fungerade.
Svar #1
Har du någon JavaScript som manipulerar DOM, som fallet beskrivs på http://support.microsoft.com/kb/927917#more_information ?
Försök att flytta alla skriptblock till helt längst ner på sidan, precis före </body>-taggen, och försök inte att sätta body-taggens innerHTML-egenskap.
Om problemet är att javascript körs innan DOM är helt byggd, försök flytta alla initialiseringsanrop till en funktion som bara körs efter att sidan är helt laddad. Så istället för något som detta:
<div class="myWidgetControl"/>
<script type="text/javascript">
initializeWidgets();
</script>
Prova något liknande detta:
<div class="myWidgetControl"/>
<script type="text/javascript">
$(document).ready(
function () { initializeWidgets(); }
);
</script>
Svar #2
Du kan använda skriptet som tillhandahålls av IE Blog för att undersöka problemet. Se: http://blogs.msdn.com/ie/archive/2009/09/03/preventing-operation-aborted-scenarios.aspx
