div ausblenden mit display:none ist verzögert
Gast
- javascript
Hallo,
in einem grottenlangsamen Internet (5 User an einer Leitung - temporäres Projekt in der Wallachei) hole ich mir mit Ajax Informationen zu einer angeklickten Adresse. Die Info erscheint in einem div.
Bisher blieb die alte Info undefiniert lange stehen, bis die neue Info da war. Das heisst, der User bekommt keine direkte Reaktion auf den Mausklick.
Ich wollte das div (die alte Info) bei Klick ausblenden und nach Erhalt der neuen Info wieder einblenden:
document.getElementById('rechts').style.display = "none";
// getNewContent
// updateNewContent
document.getElementById('rechts').style.display = "block";
Problem: Es wird **nicht sichtbar** ausgeblendet. Wenn ich das Einblenden rausnehme, sehe ich, dass das Ausblenden funktioniert, aber wenn Einblenden aktiv ist, schein Firefox und Opera zu warten.
Muss ich da noch irgend was machen wie "Screen refresh"? Wenn ja, wie geht das?
Gast
Hi there,
Ich wollte das div (die alte Info) bei Klick ausblenden und nach Erhalt der neuen Info wieder einblenden:
document.getElementById('rechts').style.display = "none";
// getNewContent
// updateNewContent
document.getElementById('rechts').style.display = "block";
>
> Problem: Es wird \*\*nicht sichtbar\*\* ausgeblendet. Wenn ich das Einblenden rausnehme, sehe ich, dass das Ausblenden funktioniert, aber wenn Einblenden aktiv ist, schein Firefox und Opera zu warten.
Du scheinst davon auszugehen, daß der Rechner darauf wartet, bis die Daten da sind. Das stimmt aber nicht, display = "none" und display = "block" passieren unmittelbar aufeinander, deshalb siehst Du auch nichts davon. Du müsstest das Wiedereinblenden vom tatsächlichen Eintreffen der Daten abhängig machen...
Du scheinst davon auszugehen, daß der Rechner darauf wartet, bis die Daten da sind. Das stimmt aber nicht, display = "none" und display = "block" passieren unmittelbar aufeinander, deshalb siehst Du auch nichts davon. Du müsstest das Wiedereinblenden vom tatsächlichen Eintreffen der Daten abhängig machen...
Oder den Browser dazu veranlassen mit der Skript-Ausführung wirklich zu warten, bis die Daten eingetroffen sind. Um das zu erreichen müsstest du im Aufruf der open
-Methode deiner XMLHttpRequest
-Instanz den dritten Parameter (async) auf false
setzen. Das sei nur der Vollständigkeit halber erwähnt. Die synchrone Vorgehensweise hat nämlich einige Nachteile.
Hallo Klawischnigg,
Du scheinst davon auszugehen, daß der Rechner darauf wartet, bis die Daten da sind. Das stimmt aber nicht, display = "none" und display = "block" passieren unmittelbar aufeinander, deshalb siehst Du auch nichts davon. Du müsstest das Wiedereinblenden vom tatsächlichen Eintreffen der Daten abhängig machen...
Danke.
Ich hatte
function updateNewContent() {
if(http.readyState == 4) {
...
}
...
document.getElementById('rechts').style.display = "block";
}
Jetzt klappt's nach Änderung
function updateNewContent() {
if(http.readyState == 4) {
...
document.getElementById('rechts').style.display = "block";
}
}
Gast