Hi,
ich bin gerade über ein sehr abstruses Problem gestolpert, dass für mich vollkommen unverständlich ist...
Auf einer Ajax-Website will ich bei Veränderungen des Contents jeweils nach ganz oben scrollen, und zwar nicht ruckweise, sondern "sanft" innerhalb einer bestimmten Zeit (z.B. einer Sekunde).
Da es sein kann, dass der neue Content wesentlich "kürzer" ist als der alte, setze ich zuerst minHeight des Body auf die Höhe des alten Contents und resette minHeight nach dem Scrollen.
Das sieht in etwa so aus:
nodeBody.style.minHeight = scrollerobj.getDocHeight () + "px";
scrollerobj.scrollTo (nodeBody);
nodeBody.style.minHeight = "100%";
Soweit in der Theorie... in der Praxis wird die minHeight allerdings seltsamerweise SOFORT auf 100% gesetzt (was die Ausgabe des Browsers betrifft), obwohl scrollTo noch nicht returned ist. Fügt man nach dem scrollTo noch einen alert() ein, so wird dieser nach Durchführung von scrollTo ausgegeben (eigentlich klar), aber das Setzen von minHeight erfolgt trotzdem sofort.
Damit die Verwirrung komplett ist: Lasse ich im alert() die aktuelle minHeight ausgeben, kommt noch der beabsichtigte Wert, in der Anzeige ist er aber schon auf 100%.
Selbes Verhalten in Firefox 2.0 und IE7.
Huch? *schultern zuck*
Sieht für mich so aus, als hätten die Browser eine geheimnisvolle Vorraussicht und könnten erraten was das Script später machen will und das gleich durchführen und dabei lustigerweise mit dem Aktualisieren der DOM-Eigenschaft schon warten, bis der Aufruf wirklich passiert.
Irgendwelche Ideen?
(PS: Habe auch versucht, den minHeight-Teil in eine extra Funktion auszulagern, die über window.setTimeout() aufgerufen wird. Selbes Verhalten, die Höhe des dargestellten Dokuments verändert sich, bevor die Funktion überhaupt aufgerufen wird...)