İçin farklı bir soruya ben oluşan bu cevabı da dahil olmak üzere, bu örnek kod .
Bu kodda, bir HTML5 Canvas'ı yakınlaştırmak / uzaklaştırmak için fare tekerleğini kullanıyorum. Chrome ve Firefox arasındaki hız farklılıklarını normalleştiren bazı kodlar buldum. Bununla birlikte, Safari'deki yakınlaştırma işlemi, her ikisinden de çok çok daha hızlıdır.
İşte şu anda sahip olduğum kod:
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 ve IE9'da aynı miktarda fare tekerleği için aynı 'delta' değerini elde etmek için hangi kodu kullanabilirim?
Bu soru ilişkilidir, ancak iyi bir cevabı yoktur.
Düzenleme : Daha fazla araştırma, bir kaydırma etkinliğinin 'yukarı' olduğunu gösterir:
| 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 (muhtemelen yanlış) Chrome v37 / OS X | 120 | 0 IE9 / Win7 | 120 | Tanımsız Opera v11 / OS X | 40 | -1 Opera v24 / OS X | 120 | 0 Opera v11 / Win7 | 120 | -3 Firefox v4 / Win7 | tanımsız | -3 Firefox v4 / OS X | tanımsız | -1 Firefox v30 / OS X | tanımsız | -1
Ayrıca, OS X'te MacBook izleme dörtgenini kullanmak, yavaş hareket ederken bile farklı sonuçlar verir:
- Safari ve Chrome'da,
wheelDelta
fare tekerleği için 120 yerine 3 değeridir. - Firefox'ta
detail
genellikle2
, bazen1
, ancak çok yavaş kaydırıldığında OLAY İŞLEMCİSİ YANGIN YOKTUR .
Yani soru şu:
Bu davranışı ayırt etmenin en iyi yolu nedir (ideal olarak herhangi bir kullanıcı aracısı veya işletim sistemi koklama olmadan)?