2009-07-08 5 views
0

Ich möchte wissen, wann alle Ereignisse für ein Mausereignis ausgelöst wurden.erkennen, wenn alle Ereignisse aus einem Mausevent ausgelöst haben?

Zum Beispiel, wenn ich Listener auf Dokument und ein Element registriert habe, dann klicken Sie auf das Element, ich könnte mehrere Ereignisse auslösen (mehr, wenn die resultierenden Ereignisse sprudeln).

Wie würde ich wissen, wenn alle aus diesem Klick resultierenden Ereignisse abgeschlossen sind?

This site bietet eine Möglichkeit, dies zu tun - sie Cluster Mausereignisse in eine Liste durch Aktualisierung der Liste mit neuen Ereignissen in einem Zeitintervall. Ich hatte auf einen automatisierten Weg gehofft, ohne einen Timer.

Antwort

0

Wenn Sie nur wollen, sind einige Code auszuführen, nachdem alle Ereignisse abgeschlossen haben, sollten Sie einen Timeout mit einem Wert von 0 verwenden:

window.setTimeout(function() 
{ 
    // All events have finished, so we can run our code now 
}, 0); 

Timer in Javascript auf dem gleichen Thread ausgeführt, so Sie zählen nicht, während anderer Javascript-Code ausgeführt wird. Wenn der Thread inaktiv wird, wird ein Timer mit einer Anzahl von 0 ausgeführt.

Die von Ihnen erwähnte Site aktualisiert diese Liste nicht in einem Zeitintervall - sie aktualisiert diese Liste jedes Mal, wenn das Ereignis mit den Handlern für alle diese Objekte ausgelöst wird. Es ist nicht möglich, ein Zeitintervall zu verwenden, um Ereignisse abzufangen.

+0

Danke für Ihren Vorschlag. Es sieht für mich so aus, dass die ppk-Seite eine Zeitüberschreitung verwendet, um Ereignisse in eine Liste zu clustern (siehe log.end und wie es aufgerufen wird). – jedierikb

+0

Keine Sorge, ich war Hilfe. Sie haben Recht, dass log.end() von einem Timer aufgerufen wird. Allerdings ist log.msg() die Funktion, die an die Liste ausgegeben wird. log.end() stellt unter anderem sicher, dass das Log immer dann nach unten gescrollt wird, wenn ein Eintrag hinzugefügt wird. –

Verwandte Themen