82

Trong khi làm việc xung quanh để tăng hiệu suất cho các ứng dụng web tiến bộ, tôi đã xem một tính năng mới Passive Event Listeners và tôi thấy khó hiểu khái niệm này.Trình nghe sự kiện thụ động là gì?

Passive Event Listeners là gì và cần có gì trong dự án của chúng tôi?

+2

https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md – JedatKinports

Trả lời

102

nghe sự kiện thụ động là một tiêu chuẩn web mới, tính năng mới vận chuyển trong Chrome 51 cung cấp một sự thúc đẩy tiềm năng lớn để di chuyển hiệu suất. Chrome Release Notes.

Nó cho phép nhà phát triển chọn tham gia hiệu suất cuộn tốt hơn bằng cách loại bỏ nhu cầu cuộn để chặn người nghe sự kiện chạm và bánh xe.

Vấn đề: Tất cả các trình duyệt hiện đại có một tính năng di chuyển ren cho phép di chuyển để chạy trơn tru ngay cả khi đắt Javascript đang chạy, nhưng tối ưu hóa này là một phần đánh bại bởi sự cần thiết phải chờ đợi kết quả của bất kỳ touchstarttouchmove xử lý, có thể ngăn hoàn toàn việc cuộn bằng cách gọi số preventDefault() trong sự kiện.

Giải pháp: - {thụ động: true}

Bằng cách đánh dấu một liên lạc hoặc bánh xe nghe như thụ động, nhà phát triển hứa hẹn xử lý sẽ không gọi preventDefault để vô hiệu hóa cuộn. 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, Demo Video, Explainer Doc

+0

vì vậy chúng tôi luôn luôn nên thêm dòng mã này (ít nhất là cho hầu hết các trường hợp), phải không? –

+0

Điều này làm hỏng động cơ js của bạn trong Mozilla. Bạn nên phát hiện trình duyệt trước khi đính kèm trình nghe sự kiện này – yardpenalty

+0

@AltianoGerung Khi trình duyệt đề xuất trình duyệt này. Bạn sẽ thấy thông báo trong tab Thông tin hoặc Cảnh báo của Bảng điều khiển. – snowYetis

Các vấn đề liên quan