Під час роботи над підвищенням продуктивності прогресивних веб-додатків я натрапив на нову функцію, Passive Event Listeners
і мені важко зрозуміти концепцію.
Що таке Passive Event Listeners
і яка потреба мати це у наших проектах?
Під час роботи над підвищенням продуктивності прогресивних веб-додатків я натрапив на нову функцію, Passive Event Listeners
і мені важко зрозуміти концепцію.
Що таке Passive Event Listeners
і яка потреба мати це у наших проектах?
Відповіді:
Слухачі пасивних подій - це новий веб-стандарт, нова функція, що постачається в 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);