Derzeit ist mein Programm an einer Stelle, wo es sowohl für den Benutzer ein bestimmtes Element scrollen, sondern auch manchmal automatisch dieses Element selbst scrollt. (Nicht eine allmähliche, schöne Scroll, aber ein sofortiger Sprung. Es macht Sinn im Zusammenhang, ich schwöre.)Machen Sie "ScrollLeft"/"ScrollTop" Änderungen nicht Scroll Event Listener
Gibt es eine Möglichkeit, die Scroll-Ereignis nicht auslösen, wenn das Scrollen durch Einstellung ScrollLeft oder ScrollTop getan wurde? Mein erster Gedanke war ein Basisschalter, wie:
ignoreScrollEvents = true;
element.scrollLeft = x;
ignoreScrollEvents = false;
function onScroll() {
if(ignoreScrollEvents) return false;
}
aber da Ereignisse nicht sofort auslösen (oops, duhh), das ist keine praktikable Lösung. Welche anderen Antworten könnte ich versuchen? Ich benutze auch jQuery, wenn das irgendwas hilft.
In meinem Code habe ich ein Problem gefunden: Manchmal passiert es, dass scrollLeft bereits 0 ist, dann setzt mein Code es ebenfalls auf 0. Daher wird kein Scroll-Ereignis ausgelöst und der nächste Benutzer wird ignoriert. (Das ist nur ein Problem, wenn sie mit Home, End usw. scrollen). Aber das ist definitiv eine nahe Lösung - und ich wusste, dass ich in dieser Dummy-Implementierung etwas Dummes verpasst habe. Vielen Dank! – Matchu
Ich habe mich gefragt, ob ... Dann ist es am besten zu überprüfen, ob Sie den Wert ändern, bevor Sie die Flagge setzen - setzen Sie ihn nicht, wenn Sie nicht sind.Möglicherweise haben Sie diesen Code bereits in einer separaten Funktion ausgeklammert, aber wenn nicht, würde es das einfacher machen - sehen Sie Rodrigos Antwort für ein Beispiel dafür. – Shog9