dicon: JS/AJAX und DOM - style.display im IE 6 macht nicht was er soll

Beitrag lesen

Das sollte sich ja bspw. mit der Developer Toolbar untersuchen lassen, wenn man mit
der mal die DOM-Struktur unter die Lupe nimmt.

Das war der entscheidende Tip... wusste nicht, dass es für den IE was vergleichbares zu
Firebug gibt... egal. Ich konnte den Fehler eingrenzen.

Im IE 6 werden durch den httpRequest 5 DIVs erzeugt, alle mit indentischer ID, die ersten
4 leer, das 5. dann mit dem eigentlichen HTML-Code für das Menü. Wenn ich jetzt versuche,
mittels Event das Menu verschwinden zu lassen, spricht die Funktion evtShowMenu (s. oben)
natürlich das erste Element mit der ID im DOM an und... es passiert "sichtbar" nix.

Bleibt die Frage, was stimmt an dem httpRequest nicht. Für mich siehts so aus, alsob
http.onreadystatechange vor dem empfangen der HTML-Daten auch den kompletten TCP-
Handshake vorneweg verarbeitet und mit jeder Serverantwort (ACK, SYC usw.) ein DIV erzeugt.
Nice to know... hilft mir aber nicht weiter.

Vielleicht entdeckt ja jemand von Euch den Bug im httpRequest:

/* =========== snip begin =========== */

91     function getAjaxData(elementId) {
92        http = false;
93        url  = 'dyn_menu.php?ID='+elementId;
94
95        if (window.XMLHttpRequest) {
96           http = new XMLHttpRequest();
97           if (http.overrideMimeType) {
98              http.overrideMimeType('text/xml');
99           }
100       } else if (window.ActiveXObject) {
101          try {
102             http = new ActiveXObject("Msxml2.XMLHTTP");
103          } catch (e) {
104             try {
105                http = new ActiveXObject("Microsoft.XMLHTTP");
106             } catch (e) {}
107          }
108       }
109
110       if (!http) {
111          alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
112          return false;
113       }
114       http.open('GET', url, true);
115       http.setRequestHeader( 'Content-length', url.length );
116       http.onreadystatechange = new Function("createMenu('"+elementId+"')");
117       http.send(null);
118    }

/* =========== snip end =========== */

Vielleicht noch als Anmerkung: Ich hatte vor 'ner Zeit ein ähnliches Problem, allerdings
mit der http.open POST Methode... damals lag's am Parameter "true" - mit "fals" war das
Problem gelöst - wirkt aber im aktuellen Fall nicht.

Grüße, dicon