Что такое прослушиватели пассивных событий?

Во время работы над повышением производительности для прогрессивных веб-приложений я столкнулся с новой функцией Passive Event Listeners, и мне сложно понять эту концепцию.

Что такое Passive Event Listeners и в чем состоит необходимость его использования в наших проектах?

4b9b3361

Пассивные слушатели событий - это новый веб-стандарт, новая функция поставляются в Chrome 51, что обеспечивает значительный потенциал для прокрутки представление. Примечания к выпуску Chrome.

Это позволяет разработчикам выбирать возможность улучшать прокрутку, устраняя необходимость прокрутки для блокировки при прослушивании прикосновений и событий на колесиках.

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

Решение: - {пассив: истина}

Отметив прикосновение или прослушиватель колес как пассивный, разработчик обещает, что обработчик не вызовет 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.

addEventListener(document, "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, Демо-видео, Explainer Doc

96
ответ дан 09 июня '16 в 12:25
источник