MSIE: operation aborted

operation abortedOp één of andere site, die misschien wel en misschien niet met mijn werkgever te maken heeft, zagen we vreemde dingen in MS Internet Explorer; tijdens het laden van sommige pagina’s kregen we een lelijke “Operation aborted” error te zien.

De oorzaak: terwijl MSIE (via een trage bedrijfsproxy) de DOM van een zwaardere pagina nog aan het inladen was, probeerde een javascriptje (dat de .update functie van Prototype aanroept) al een DIV te updaten. En blijkbaar slaat Internet Explorer (versie 6 en 7) in dat geval een beetje aan het stotteren.

De oplossing: het uitvoeren van de element.update uitstellen tot de DOM geladen is. MSIE (6 en 7) hebben daar blijkbaar geen kant-en-klare functie voor, maar op het internet vind je daar wel oplossingen voor.

Zo, nu dat achter de rug is, ga ik een huis kopen! :-)

11 thoughts on “MSIE: operation aborted

  1. Pieter

    Dat is inderdaad een leuke. Meestal is het omdat je een dom element manipuleert vooraleer het volledig is ingelezen (bvb. met swfobject kun je dit al eens voorhebben als je de javascript binnen de flash div zet).

    Soms is het opgelost door je javascript files op het einde (net voor de closing body tag) te plaatsen, maar dan mag je wel geen inline javascript hebben die deze scripts al nodig heeft.

    Reply
  2. Bramus!

    Zit nocthans ingebouwd in Prototype:


    // Prototype = 1.6
    Event.observe(document, 'dom:loaded', function() {
    alert("DOM Ready");
    });

    Vrij logisch dat je een fout krijgt (element bestaat nog niet), maar wel ongelooflijk bizar dat dat ding een DNS-error opgooit! Ik zie alvast geen verband …

    Reply
  3. futtta Post author

    dns-errors heb ik nooit gezien, maar misschien hebben we het over andere sites en andere projecten?

    maar dat van die .observe is ‘a nice catch’ wel, thanks! maar moet er dan niet eerder op document-niveau ‘geluisterd’ worden (“document.observe(“dom:loaded”, function()”, cfr. http://www.prototypejs.org/api/document/observe)?

    Reply
  4. Bramus!

    Ach, hier een situatie tegengekomen dat er idd een Operation Aborted op het scherm kwam; waarna er doorverwezen werd naar de res://ieframe.dll/dnserror.htm pagina (“Server not found blablabla”).

    En die Event.Observe; da’s zo’n beetje de core van de meeste libraries (in bvb jQuery is het $(document).ready( function() { ... });) om cross browser event handling (o.a. op click, mouseover, etc.) te hebben :)

    Reply
  5. Pingback: futtta's blog

  6. frank Post author

    net nog met iemand gemaild die ook ‘operation aborted’ errors kreeg (met de wordpress-flickr-manager plugin, die lightbox gebruikt) en nog een eenvoudige alternatieve oplossing “gevonden”.

    aangezien het probleem zich enkel in MSIE stelt, kun je het MSIE-specifieke (alhoewel het wel in de HTML4-specs staat) defer-attribuut meegeven aan je script-tag:

    <script src="..."></script>
    wordt dan gewoon
    <script defer="true" src="..."></script>

    hierdoor stelt MSIE de uitvoering van de javascript uit tot wanneer de DOM ingeladen is en dit loste het “operation aborted”-probleem met wordpress-flickr-manager alleszins op.

    Reply
  7. Pingback: De bewerking is afgebroken | Andhi.be

Leave a Reply

Your email address will not be published. Required fields are marked *