2009-06-01 10 views
0

Ich habe ein Problem, wo ich ein Ajax fetch von einigen Tabellenzeilen, die ich verwenden, um den Körper einer Tabelle zu ersetzen.IE verliert CSS-Stile, nachdem Tabellenzeilen mit Javascript angefügt werden

Das Problem ist, dass manchmal IE (6/7) beschließt, nach einem solchen Append alle Seitenstile zu vergessen. (Das heißt, es kehrt Stile in CSS zu verwenden enthält am oberen Rand der Seite, aber keine Stile auf der Seite selbst definiert)

ich in der Lage gewesen otherpeopledescribing das gleiche Problem zu finden, aber keine Lösung . Ist das schon mal jemand begegnet und konnte es lösen?

Bonuspunkte, wenn die Lösung nicht alle CSS auf der Seite externalisieren würde.

Antwort

1

Nun, wenn Sie meinen, dass Sie Stil-Tags im Körper haben, sollten sie nicht wirklich da sein, also ist es nicht verwunderlich, dass einige Browser darauf schlecht reagieren.

Wenn Sie alle Zeilen in einer Tabelle ersetzen, versuchen Sie stattdessen, die gesamte Tabelle zu ersetzen. Die Struktur einer Tabelle soll nicht wirklich so drastisch geändert werden, so dass das Ersetzen der gesamten Tabelle sehr wohl zu einem weniger aggressiven Reflow der Seite führen kann. Das kann verhindern, dass die fraglichen Style-Tags im Code entfernt werden.

Überprüfen Sie, ob der Code, den Sie auf der Seite eingeben, gültig ist. Wenn Sie einen ungültigen HTML-Code eingeben, kann dies dazu führen, dass der Browser den Rendermodus ändert. Dies würde wiederum eine vollständige Überprüfung des Codes erfordern, was eine mögliche Erklärung dafür sein könnte, warum Inline-Style-Tags weggeworfen werden.

Statt einer Tabelle könnten Sie versuchen, div-Tags zu verwenden, die Sie anordnen, um das gewünschte Layout zu erstellen. Das Ersetzen einiger div-Elemente kann den Browser weniger verwirren als das Ersetzen einer Tabelle oder eines Teils einer Tabelle, wodurch die Seite stabiler wird.

Wenn alles scheitert, sehe ich keine andere Lösung, als die Seite robuster zu machen, indem ich keine Style-Tags in den Body setze. Das sollte man auf lange Sicht sowieso in Betracht ziehen.

Verwandte Themen