2012-12-10 5 views
8

Es gibt eine oft-cited blog post geschrieben von John Resig im Januar 2011, die das Anhängen von Handlern an das Fenster Scroll-Ereignis abrät.

Stattdessen sagt die gemeinsame Weisheit Handler zu drosseln, zum Beispiel:

$(window).scroll(_.throttle(myScrollHandler, 250)); 

In meiner letzten Prüfung, die UI Antwort viel glatter ist, wenn der Handler direkt mit dem Scroll-Ereignis verbunden ist. Das Drosseln des Handlers verursacht eine sichtbare Verzögerung.

Haben moderne Browser dieses Problem gelöst? Gibt es Test- oder Browserkompatibilitätsdaten?

+0

feuert immer noch viele Male pro Sekunde in den meisten Browsern – charlietfl

+2

'Throttling the handler verursacht eine sichtbare Verzögerung "- Weil Sie mehr Ereignistreffer ohne Drosselung bekommen. Wenn Ihr Weg mit vernünftiger Hardware und einigermaßen modernen Browsern gut funktioniert, dann sollten Sie es unbedingt tun. Aber respektiere jene Leute, die keine modernen Browser oder Computer haben. Siehe auch http://benalman.com/projects/jquery-throttle-debounce-plugin/ –

+0

Sie können auch versuchen, die Verzögerung etwas zu reduzieren. Bei 250 wird Ihr .scroll-Ereignis nur vier Mal pro Sekunde ausgeführt. –

Antwort

6

Die Drosselklappe reduziert die Anzahl der Ereignisse, die pro Sekunde ausgelöst werden, auf 4. Ohne Drosselung ist es möglich, dass eine wesentlich größere Anzahl von Ereignissen pro Sekunde ausgelöst wird. 4 pro Sekunde sind vom menschlichen Auge (je nachdem, was Sie gerade tun) leicht zu erkennen.

Ob Sie noch benötigen, um zu drosseln, hängt es wirklich von Ihren Klienten ab. Wenn Sie mit vielen älteren Computern mit schlechten Grafikkarten arbeiten, die IE6 verwenden, wird Hochgeschwindigkeits-Ereignisfeuern wahrscheinlich viele auffällige Probleme verursachen. Es hängt auch davon ab, was das Scroll-Ereignis tatsächlich macht (wie lange es dauert, ob es Speicher verbraucht und wie schnell es es absetzt usw.)

Verwandte Themen