Ich möchte ein Repaint während einer Javascript-Schleife erzwingen. Zum Beispiel:
var s = document.getElementById("foo");
for (var i = 0; i < 10000; i++)
s.innerText = i + " times";
Das wird am Ende aktualisiert, aber ich würde gerne jeden Zwischenschritt beobachten. Die übliche Antwort auf dieses Problem ist die Verwendung von setTimeout
Es gibt jedoch drei Gründe, warum dies nicht akzeptabel ist:
- Es gibt weitere Schaltflächen/Links usw. auf der Seite, und es ist wichtig, dass keine davon angeklickt werden kann, während die Schleife läuft.
- Am Ende der Schleife möchte ich ein Popup-Fenster anzeigen. Wenn das Timeout ausgelöst wird, blenden Standard-Popup-Blocker es aus, da es nicht mehr vom Benutzer initiiert wird.
- Wenn der Benutzer klickt, während die Schleife ausgeführt wird, möchte ich, dass der Klick gepuffert wird, bis die Schleife abgeschlossen ist, und nicht auf halbem Weg durch die Schleife ausgelöst wird.
Gibt es eine Möglichkeit, den Browser zum Neuzeichnen zu zwingen?