Що таке слухачі пасивних подій?


180

Під час роботи над підвищенням продуктивності прогресивних веб-додатків я натрапив на нову функцію, Passive Event Listenersі мені важко зрозуміти концепцію.

Що таке Passive Event Listenersі яка потреба мати це у наших проектах?


Відповіді:


213

Слухачі пасивних подій - це новий веб-стандарт, нова функція, що постачається в Chrome 51, що забезпечує головний потенціал для підвищення продуктивності прокрутки. Примітки до випуску Chrome

Це дозволяє розробникам увімкнути кращу продуктивність прокрутки, усуваючи необхідність прокрутки, щоб блокувати слухачів подій на дотик та колесо.

Проблема: Усі сучасні веб-переглядачі мають функцію прокрутки з потоком, щоб дозволити безперебійне прокручування, навіть коли працює дорогий JavaScript, але ця оптимізація частково переможена необхідністю чекати результатів будь-яких touchstartта touchmoveобробників, що може запобігти прокрученню повністю за допомогою виклику preventDefault()на подію.

Рішення: {passive: true}

Позначивши прослуховування дотику чи колеса як пасивний, розробник обіцяє, що обробник не закликає preventDefaultвідключити прокрутку. This frees the browser up to respond to scrolling immediately without waiting for JavaScript, thus ensuring a reliably smooth scrolling experience for the user.

document.addEventListener("touchstart", function(e) {
    console.log(e.defaultPrevented);  // will be false
    e.preventDefault();   // does nothing since the listener is passive
    console.log(e.defaultPrevented);  // still false
}, Modernizr.passiveeventlisteners ? {passive: true} : false);

DOM Spec , демонстраційне відео , пояснювальний документ


1
тому ми завжди повинні додавати ці рядки коду (принаймні для більшості випадків), правда?
Altiano Gerung

Це вибиває ваш js-движок у Mozilla. Краще виявити браузер перед установкою цієї події слухача
yardpenalty.com

@AltianoGerung Коли браузер рекомендує це. Повідомлення ви побачите на вкладці Інформація або Попередження консолі.
snowYetis

@yardpenalty.com Ми можемо використовувати наступну поліфайл та уникати перевірок браузера. Для випадків використання прокрутки великий плюс для використання слухачів пасивних подій. github.com/WICG/EventListenerOptions/blob/gh-pages/…
Vikrant Siwach

@Vikrant Siwach чудова порада. Polyfill швидко і безболісно кілька , коли ви управляти всіма з них, скажімо , polyfill.js ДАВАЙТЕ
yardpenalty.com
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.