Bối cảnh: Tôi đang thực hiện một số kiểm tra giao diện người dùng cần phát hiện xem mọi người có chú ý hay không. Nhưng, câu hỏi này không phải là về API hiển thị trang .
Cụ thể, tôi muốn biết mã Javascript của mình sẽ bị ảnh hưởng như thế nào nếu tab hiện tại không hoạt động hoặc cửa sổ trình duyệt không hoạt động, trong các trình duyệt khác nhau. Tôi đã đào lên những điều sau đây cho đến nay:
- ios 5 tạm dừng javascript khi tab không hoạt động
setInterval
vàsetTimeout
độ trễ được giảm khi các tab không hoạt động - có vẻ như điều này mới bắt đầu xuất hiện gần đây và có thể làm rối tung các bài kiểm tra đơn vị Jasmine, xung quanh những thứ khác.requestAnimationFrame
bị chậm khi tab không hoạt động (hợp lý, không thể nghĩ tại sao điều này sẽ ảnh hưởng đến bất kỳ ai quá nhiều)
Tôi có những câu hỏi sau:
- Khác với trình duyệt trên thiết bị di động, trình duyệt trên máy tính để bàn có bao giờ tạm dừng thực thi JS khi một tab không hoạt động không? Khi nào và trình duyệt nào?
- Những trình duyệt nào làm giảm sự
setInterval
lặp lại? Có phải nó chỉ giảm đến một giới hạn hoặc theo tỷ lệ phần trăm? Ví dụ: nếu tôi lặp lại 10ms so với lặp lại 5000ms, mỗi lần sẽ bị ảnh hưởng như thế nào? - Những thay đổi này có xảy ra nếu cửa sổ nằm ngoài tiêu cự, trái ngược với chỉ tab không? (Tôi tưởng tượng sẽ khó phát hiện hơn vì nó yêu cầu API hệ điều hành.)
- Có bất kỳ hiệu ứng nào khác sẽ không được quan sát trong một tab hoạt động không? Họ có thể làm mọi thứ rối tung lên nếu không thực hiện chính xác (ví dụ như các bài kiểm tra Jasmine đã nói ở trên)?
setInterval
/ setTimeout
lần dưới 1000ms được thay đổi thành 1000ms khi tab / cửa sổ bị mờ
setInterval
/ setTimeout
lần dưới 1000ms được thay đổi thành 1000ms khi tab / cửa sổ bị mờ. Không rõ những gì bạn đã cố gắng truyền đạt