Verfasst von: hugahaga | 8 August 2008

Etwas Webprogrammierung

An dieser Stelle möchte ich den Rest der Welt gerne an einer Lösung teilhaben lassen, die ich mir verdammt hart erarbeiten musste.

Der Internet Explorer (IE) ist nicht gerade dafür bekannt sich besonders an Standards zu halten. Einen dieser netten kleinen Bugs hatte ich gerade – den „operation cancelled“.
Mit viel Geduld und Googles Hilfe kommt man aber dann doch der Ursache auf die Spur und mit ein klein wenig Fleiß und Hirnschmalz kann man dann auch das Problem umgehen (umgehen! nicht lösen! hmpf…).

Ein besondere Hilfe war mir dabei ein Blogeintrag von Aaron Newton at clientside.

Wie es dazu kam:
Auf immer mehr Seiten mit Javascript (JS) kommen JS-Frameworks wie Prototype, Scriptaculous oder wie in meinem Fall dojo zum Einsatz. Diese Frameworks machen intensiven Gebrauch von DOM-Manipulationen. Das kann beim IE dann gerne dazu führen, dass interessante Race conditions zwischen einzelnen Skripten und sogar zwischen der JS-Laufzeitumgebung und der von CSS auftreten (hab ich gelesen. Nachgestellt hab ich das noch nicht, so viel Freizeit hab ich dann auch nicht).
Google listet einige tausend Einträge für „internet explorer operation canceled„.

Genau so eine Situation hatte ich bei der Arbeit. Eine Seite sollte nette Effekte bekommen, dojo war das Toolkit der Wahl. Alles eingebaut, getestet im Firefox (FF), weil da viel gut Debugging mit Firebug und so und für gut befunden. Dann ans Testen mit anderen Browsern gegangen.

Opera 9: OK
Opera 9.5: OK
Safari 3.1: OK
IE 6: FEHLER. Eine nette Fehlerbox mit dem Inhalt
Internet Explorer cannot open the Internet site http://<Web site>.com. Operation aborted.
Reizend. Was macht man in solchen Fällen? Den Schuldigen suchen. Skript ein- und wieder ausgebaut und die dojo.js als verantwortlich isoliert. Dann gegoogelt und so ein paar wage Einträge gefunden mit dem Tenor: „Jaaa, das könnte was mit Skripten sein, die sich so in die Quere kommen.“ Super!

Intensivere und zielgerichtete Suche bringt mich unter anderem auf den o.g. Eintrag von Aaron Newton samt zugehöriger Diskussion. Sehr aufschlussreich!

Also hab ich meine Seiten nach Skripten durchsucht, die sich potentiell in die Quere kommen können. Also erst mal alle aktiven Inhalte raus und Site im IE gestestet -> läuft. So jetzt erst mal das dojo-Toolkit dazu holen und noch mal testen -> Fehler. WTF?
OK, noch mal geprüft, aber nur die dojo.js wird geladen, trotzdem geht der Seitenaufruf im IE in die Hose (FF, Safari und Opera mache keine Zicken).
Hmmm, mal schauen: nein kein Schnipsel Skriptcode mehr im Quelltext, nur noch pures XHTML.
Also mal das CSS rausnehmen.
Auch nicht. Sakrament, was soll der Scheiß??
Na gut, ganz ruhig und mit viel Geduld versucht die dojo.js zu debuggen.
Wer schon mal versucht hat Javascript im IE zu debuggen, leidet jetzt mit mir.
Kein greifbares Ergebnis… f**k.
Erst mal Kaffee holen, bei Bewegung hat man die besten Ideen. Was kann noch das DOM verändern, während die Seite noch lädt? (…?)

ACH JA! Das HTML wird aus JSPs generiert! Und da sind einige Tags dabei, die auch wieder Code in die Seite injizieren!
Also alles raus. Tada!!! Läuft auch im IE.
Sehr schön soweit, jetzt mal schauen, welcher Tag uns fickt.
Schon beim zweiten ein Erfolg, das Ding schreibt den Base Tag.
Leider brauchen wird den dringend und können ihn nicht einfach löschen. Dann schieben wir ihn einfach mal vom Anfang des HEADs (vor der dojo.js) ans Ende des HEADs (hiiinter die dojo.js).

HEUREKA, die Seite läuft auch im IE.
Man das hat Nerven gekostet… Microsoft ist der Fehler übrigens seit einiger Zeit bekannt. Ohne Worte.

Advertisements

Responses

  1. Ist das bei allen Versionen vom IE?

  2. Laut Microsoft (http://support.microsoft.com/default.aspx/kb/927917) ist der IE in Version 5.5, 6 und 7 betroffen. Getestet habe ich es in 5.5 und 6.


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Kategorien

%d Bloggern gefällt das: