Body-Node per JS austauschen klappt nicht vollständig
Oliver Kurlvink
- javascript
Hallo,
ich baue gerade einen kleinen Player (XHTML-Seite mit Javascript), der basierend auf einer XML-Playliste XHTML-Dateien einliest und dann den kompletten Body der Originalseite ersetzt. Dazu klone ich mir den Body der eingelesenen Datei, löschen den Body-Node der Originalseite und füge dann an dem HTML-Node der Originalseite den geklonten Body an.
Im DOM Inspector wird mir der Body-Austausch auch korrekt angezeigt. Die Originalseite hat einen leeren Body, dann wird ein Body mit Text und dann ein Body mit Flash-Objekt eingesetzt.
Leider scheint FireFox (1.5) aber die Darstellung nicht sauber hinzukriegen: Der neue Body mit Textinhalt würde die Hintergrundfarbe setzen, was FF ignoriert. Und der neue Body mit dem Flash-Objekt wird scheinbar insofern ignoriert, dass kein Flash angezeigt wird.
Die beiden XHTML-Seiten (Text/Flash) funktionieren für sich aufgerufen problemlos. Im DOM wird mir nach dem Body-Tausch auch alles so angezeigt, wie ich es gerne hätte. Nur stimmt die Darstellung im Browser nicht mit dem überein, was mir der DOM Inspector an Elementen anzeigt.
Wo liegt hierbei der Fehler?
Ciao,
Oliver
Hallo,
es wäre sinnig, wenn du das beispielhaft online stellen könntest (Tipps für Fragende). Ich weiß auch nicht auf Anhieb eine Antwort und müsste es näher untersuchen-
Das Entfernen, Klonen und Kopieren der body-Knoten scheint mir gefühlsmäßig etwas heikel. Hast du mal probiert, mit einem div-Container zu arbeiten oder alle Kindknoten nacheinander zu löschen/zu kopieren?
Mathias
Hallo,
online stellen kann ich das ganze nicht. Die Funktion mit cloneNode und appendChild dieser geklonten Node ist aber recht trivial.
gefühlsmäßig etwas heikel. Hast du mal probiert, mit einem div-Container zu arbeiten oder alle Kindknoten nacheinander zu löschen/zu kopieren?
Ja, ich habe es mal probiert, Stück für Stück die childNodes des Body zu klonen und an den anderen Body anzuhängen. Das Ergebnis ist das Gleiche: Text wird angezeigt, alles andere ignoriert.
Jetzt suche ich mal nach einer Möglichkeit, einen Redraw zu erzwingen.
Ciao :)