2014-06-18 41 views
1

尋找在MDN's polyfil爲DOM3 wheel事件,我發現這個行:輪事件,和移動deltaY值

event.deltaY = - 1/40 * originalEvent.wheelDelta; 

在polyfil對於不支持DOM3事件(車輪)瀏覽器的event對象是給出deltaY
這個比例是如何計算的1/40 * wheelDelta?爲什麼1/40

如果我要爲我的圖書館創建一個類似的polyfil,並且想要傳遞給事件對象delta信息,我應該同時添加deltaX還是deltaZ?同樣的比例適用嗎?

回答

3

爲什麼1/40?

Microsoft使用傳統和非標準MouseWheelEvent

即事件具有wheelDelta屬性,它是(source

抽象值,其指示所述車輪多遠轉動。

在IE,即值通常爲±120(source

的值是相同的或WM_MOUSEWHEEL WM_MOUSEHWHEEL所述增量值。這意味着如果鼠標滾輪不支持高分辨率滾動,則每個凹槽的值爲120。即使系統設置的滾動量是頁面滾動,值也不會更改 。

該polyfill使用1deltaMode。這意味着(source

增量值用行指定。

一次滾動的默認行數爲3(至少在Windows上)。您可以在控制面板 - >鼠標 - >滾輪選項卡中更改此號碼。

然後,3/120給出了1/40因子。

相同的比例是否適用於其他軸?

好了,問題是,(source

IE和Opera(普雷斯托)只支持wheelDelta屬性,不支持水平滾動。

因此,填充工具設置deltaXdeltaZ0