Op ÊÊ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! đ
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.
ja, bij het zoeken naar ‘operation aborted’ ben ik ook op jouw blog gekomen đ
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 …
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)?
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 đMootools heeft, zoals prototype, ook functionaliteit hiervoor ingebouwd: http://docs.mootools.net/Window/Window-DomReady.js
net gelezen op de IE dev-blog; deze bug zal er in IE8 -eindelijk- uit zijn. meer info op http://blogs.msdn.com/ie/archive/2008/04/23/what-happened-to-operation-aborted.aspx
Heh, ging het ook net posten hier đ
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 type="text/javascript" src="..."></script>
wordt dan gewoon
<script type="text/javascript" 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.