Heim >Web-Frontend >js-Tutorial >Lösung für das doppelte Auslösen von Ereignisklicks in iScroll_javascript-Kenntnissen
Ich habe bereits Artikel von vielen Freunden gelesen, in denen dieses Problem diskutiert wurde. Verwenden Sie beispielsweise eine Variable, um das Ausführungsintervall oder ähnliches aufzuzeichnen. Ich habe das Gefühl, jedes Mal masturbieren zu müssen, was ziemlich ermüdend ist. Ich wähle gerne Werkzeuge aus, bevor ich Steine verschiebe. Tatsächlich ist die Lösung dieses Problems sehr einfach. iScroll fängt tatsächlich die Ereignisse touchstart und touchend ab, wenn auf den Browser geklickt wird. Verwenden Sie js, um das Onclick-Ereignis des Elements (_end-Funktion) auszulösen, wenn Sie das Ende berühren. Im tatsächlichen Betrieb wird zuerst touchend und dann die onclick-bezogene Funktion ausgeführt. Dies verursacht Kopfschmerzen mit einem Klick und zwei Auslösern. Das ist zunächst einmal kein Problem. Der Grund, warum dies ein Problem darstellt, ist, dass wir uns den Quellcode von iScroll ansehen müssen. Die Lösung dieses Problems besteht darin, die Ausführung der Funktion zum zweiten Mal zu verweigern. Und meine Logik ist genau die gleiche. Wir können die an das onclick-Ereignis gebundene Funktion entfernen, nachdem wir den Code ausgeführt haben, der das click-Ereignis in der _end-Funktion auslöst. Fügen Sie das Ereignis dann nach einigen hundert Millisekunden erneut hinzu. Zum Beispiel:
Nach dem Entfernen der onclick-bezogenen Funktionen wird die Testfunktion natürlich nicht beim zweiten Mal ausgelöst. Um es beim nächsten Mal weiter zu verwenden, können wir setTimeout verwenden, um den Onclick-Inhalt wiederherzustellen.
Der geänderte iscroll-Quellcode (ca. 550 bis 570 Zeilen, in der _end-Funktion):
_clickBack-Funktion und HashBox-Code-Snippet (vor der _end-Funktion hinzugefügt)
Natürlich kann es auch über eine öffentliche Funktion implementiert werden, ohne den iscroll-Quellcode zu ändern.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle hilfreich ist, die Verwendung der Bildlaufsteuerung zu erlernen.