2 Stimmen

Neuzeichnen während Javascript-Schleife erzwingen

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?

1voto

Sebas Punkte 20444

Ich fürchte, dies ist Ihre einzige Lösung, da die nicht-umkehrbare-in-the-middle ist etwas wichtig, wie ein Prädikat für Geschwindigkeitsgewinne bei der Wiedergabe von Browsern.

Vielleicht könnten Sie ein Puffer-me-Flag in den Klick-Ereignissen verwalten, die Sie nicht auslösen wollen? Oder besser gesagt ein dont-buffer-me Flag...

Ich hoffe, es hat geholfen, viele Grüße.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X