Đối với một câu hỏi khác tôi đã soạn câu trả lời này , bao gồm cả mã mẫu này .
Trong mã đó, tôi sử dụng bánh xe chuột để phóng to / thu nhỏ Canvas Canvas. Tôi đã tìm thấy một số mã bình thường hóa sự khác biệt về tốc độ giữa Chrome và Firefox. Tuy nhiên, việc xử lý thu phóng trong Safari nhanh hơn nhiều so với cả hai.
Đây là mã tôi hiện có:
var handleScroll = function(e){
var delta = e.wheelDelta ? e.wheelDelta/40 : e.detail ? -e.detail/3 : 0;
if (delta) ...
return e.preventDefault() && false;
};
canvas.addEventListener('DOMMouseScroll',handleScroll,false); // For Firefox
canvas.addEventListener('mousewheel',handleScroll,false); // Everyone else
Tôi có thể sử dụng mã nào để có cùng giá trị 'delta' cho cùng số lượng bánh xe chuột lăn trên Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 và IE9?
Câu hỏi này có liên quan, nhưng không có câu trả lời tốt.
Chỉnh sửa : Điều tra thêm cho thấy một sự kiện cuộn 'lên' là:
| evt.wheelDelta | evt.detail ------------------ + ---------------- + ------------ Safari v5 / Win7 | 120 | 0 Safari v5 / OS X | 120 | 0 Safari v7 / OS X | 12 | 0 Chrome v11 / Win7 | 120 | 0 Chrome v37 / Win7 | 120 | 0 Chrome v11 / OS X | 3 (!) | 0 (có thể sai) Chrome v37 / OS X | 120 | 0 IE9 / Win7 | 120 | chưa xác định Opera v11 / OS X | 40 | -1 Opera v24 / OS X | 120 | 0 Opera v11 / Win7 | 120 | -3 Firefox v4 / Win7 | không xác định | -3 Firefox v4 / OS X | không xác định | -1 Firefox v30 / OS X | không xác định | -1
Hơn nữa, sử dụng bàn di chuột MacBook trên OS X cho kết quả khác nhau ngay cả khi di chuyển chậm:
- Trên Safari và Chrome,
wheelDelta
giá trị là 3 thay vì 120 cho bánh xe chuột. - Trên Firefox ,
detail
thông thường2
, đôi khi1
, nhưng khi cuộn rất chậm, KHÔNG CÓ SỰ KIỆN XỬ LÝ NÀO TẤT CẢ .
Vì vậy, câu hỏi là:
Cách tốt nhất để phân biệt hành vi này (lý tưởng mà không có bất kỳ tác nhân người dùng hoặc hệ điều hành nào đánh hơi) là gì?
e.wheelDelta/120
?