สำหรับคำถามอื่นฉันได้รวบรวมคำตอบนี้รวมถึงโค้ดตัวอย่างนี้ด้วย
ในรหัสนั้นฉันใช้ล้อเมาส์เพื่อซูมเข้า / ออกจากผ้าใบ HTML5 ฉันพบรหัสบางอย่างที่ทำให้ความเร็วแตกต่างกันตามปกติระหว่าง Chrome และ Firefox อย่างไรก็ตามการจัดการการซูมใน Safari นั้นเร็วกว่าในทั้งสองอย่างมาก
นี่คือรหัสที่ฉันมีในปัจจุบัน:
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
ฉันสามารถใช้รหัสใดในการรับค่า 'เดลต้า' ที่เหมือนกันสำหรับปริมาณล้อเมาส์ที่เท่ากันใน Chrome v10 / 11, Firefox v4, Safari v5, Opera v11 และ IE9
คำถามนี้เกี่ยวข้อง แต่ไม่มีคำตอบที่ดี
แก้ไข : การตรวจสอบเพิ่มเติมแสดงให้เห็นว่าเหตุการณ์เลื่อนหนึ่ง 'ขึ้น' คือ:
| 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 (อาจผิด)
Chrome v37 / OS X | 120 | 0
IE9 / Win7 | 120 | ไม่ได้กำหนด
Opera v11 / OS X | 40 | -1
Opera v24 / OS X | 120 | 0
Opera v11 / Win7 | 120 | -3
Firefox v4 / Win7 | ไม่ได้กำหนด | -3
Firefox v4 / OS X | ไม่ได้กำหนด | -1
Firefox v30 / OS X | ไม่ได้กำหนด | -1
นอกจากนี้การใช้แทร็คแพดของ MacBook บน OS X จะให้ผลลัพธ์ที่แตกต่างแม้จะเคลื่อนไหวช้า:
- บน Safari และ Chrome
wheelDeltaค่าของ 3 แทน 120 สำหรับล้อเลื่อนของเมาส์ - บน Firefox
detailมักจะเป็น2บางครั้ง1แต่เมื่อเลื่อนช้ามากไม่มีตัวจัดการเหตุการณ์ใดๆ เลย
ดังนั้นคำถามคือ:
อะไรคือวิธีที่ดีที่สุดในการแยกความแตกต่างของพฤติกรรมนี้ (โดยไม่มีตัวแทนผู้ใช้หรือระบบปฏิบัติการดมกลิ่น)
e.wheelDelta/120?