สำหรับคำถามอื่นฉันได้รวบรวมคำตอบนี้รวมถึงโค้ดตัวอย่างนี้ด้วย
ในรหัสนั้นฉันใช้ล้อเมาส์เพื่อซูมเข้า / ออกจากผ้าใบ 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
?