Pasif olay dinleyicileri nelerdir?


Yanıtlar:


213

Pasif olay dinleyicileri, Chrome 51'de sunulan ve kaydırma performansını önemli bir şekilde artıran yeni bir web standardıdır. Chrome Sürüm Notları.

Geliştiricilerin, dokunma ve tekerlek olay dinleyicilerini engellemek için kaydırma ihtiyacını ortadan kaldırarak daha iyi kaydırma performansına katılmalarını sağlar.

Sorun: Tüm modern tarayıcılarda, pahalı JavaScript çalışırken bile kaydırmanın sorunsuz bir şekilde çalışmasına izin veren bir dişli kaydırma özelliği vardır, ancak bu optimizasyon, herhangi bir touchstartve touchmoveişleyicinin sonuçlarını beklemek zorunda kaldığı için kısmen yenilir ve bu da çağrıyı tamamen arayarak engelleyebilir. preventDefault()olay.

Çözüm: {passive: true}

Bir dokunuş veya tekerlek dinleyicisini pasif olarak işaretleyerek, geliştirici işleyicinin preventDefaultkaydırmayı devre dışı bırakmaya çağırmayacağına söz veriyor. 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 , Demo Video , Açıklayıcı Doküman


1
bu yüzden her zaman bu kod satırlarını eklemeliyiz (en azından çoğu durumda), değil mi?
Altiano Gerung

Bu, Mozilla'daki js motorunuzu kilitler. Bu olay dinleyicisini eklemeden önce tarayıcıyı daha iyi tespit
edersiniz

@AltianoGerung Tarayıcı bunu önerdiğinde. İletiyi Konsolun Bilgi veya Uyarı sekmesinde göreceksiniz.
snowYetis

@ yardpenalty.com Aşağıdaki çoklu dolguyu kullanabilir ve tarayıcı kontrollerinden kaçınabiliriz. Kaydırma kullanım durumlarında pasif olay dinleyicilerinin kullanılması büyük bir artıdır. github.com/WICG/EventListenerOptions/blob/gh-pages/…
Vikrant Siwach

@ Vikrant Siwach büyük tavsiye. Polyfill hepsini diyelim
polifill.js
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.