2012-12-10 27 views
8

Có một số oft-cited blog post được viết bởi John Resig vào tháng 1 năm 2011 có lời khuyên chống lại việc gắn trình xử lý vào sự kiện cuộn cửa sổ.

Thay vào đó, sự khôn ngoan thông thường nói đến tăng tốc xử lý của bạn, ví dụ:

$(window).scroll(_.throttle(myScrollHandler, 250)); 

Trong thử nghiệm gần đây của tôi, phản ứng UI là trơn tru hơn nhiều khi xử lý được gắn trực tiếp vào sự kiện di chuyển. Điều chỉnh bộ xử lý gây ra hiện tượng trễ.

Trình duyệt hiện đại đã giải quyết được sự cố này chưa? Có bất kỳ dữ liệu khả năng tương thích với trình duyệt hoặc thử nghiệm nào không?

+0

vẫn cháy nhiều lần trong hầu hết các trình duyệt – charlietfl

+2

'Điều chỉnh trình xử lý gây ra một lag có thể nhìn thấy - Bởi vì bạn đang nhận được nhiều sự kiện truy cập mà không cần điều chỉnh. Nếu cách của bạn hoạt động tốt trên phần cứng hợp lý và các trình duyệt hợp lý hiện đại, thì bằng mọi cách, hãy thực hiện nó. Nhưng tôn trọng những người không có trình duyệt hoặc máy tính hiện đại. Xem thêm http://benalman.com/projects/jquery-throttle-debounce-plugin/ –

+0

Bạn cũng có thể thử giảm độ trễ một chút. Tại 250, sự kiện .scroll của bạn sẽ chỉ thực hiện bốn lần mỗi giây. –

Trả lời

6

Bộ giảm tốc làm giảm số lượng sự kiện được truyền đến 4 giây một lần. Nếu không có điều chỉnh, có thể cho số lượng sự kiện lớn hơn đáng kể để bắn mỗi giây. 4 mỗi giây có thể dễ dàng phát hiện bởi mắt người (tùy thuộc vào những gì bạn đang làm).

Cho dù bạn vẫn còn cần để tăng tốc, điều đó thực sự tùy thuộc vào khách hàng của bạn. Nếu bạn đang đối phó với rất nhiều máy tính cũ với card đồ họa xấu sử dụng IE6, sự kiện bắn tốc độ cao có thể sẽ gây ra rất nhiều vấn đề đáng chú ý. Nó cũng phụ thuộc vào những gì sự kiện cuộn của bạn thực sự đang làm (phải mất bao lâu để trả lời, cho dù nó tiêu thụ bộ nhớ và tốc độ nó phát hành bộ nhớ, v.v.)

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