Bug-org 970141 The value of deltaX and deltaY of WheelEvent should be in CSS pixels if its deltaMode is DOM_DELTA_PIXEL
初回投稿日時: 2014年03月20日21時46分18秒
カテゴリ: Events Mac Mozilla Core Mozilla30 バグ修正
SNS:
Tweet (list)
MacのRetinaディスプレイモデルを使用していると、WheelEvent
のdeltaX
やdeltaY
が、ディスプレイの物理ピクセル数で返されるため、Javascriptで実装された、独自のスクロール可能な要素のスクロールスピードが速すぎる、というバグです。
この修正により、WheelEvent
は物理ピクセル値ではなく、CSSピクセル値で返すようになりました(deltaMode
がDOM_DELTA_PIXEL
の場合の話です、もちろん)。
なお、ピクセル単位でのスクロールは、現在のところ、Macでしか発生しませんので、結果的にはMac固有の修正になっています。
そして、ピクセル単位のホイールイベントは、あくまでも、デバイスピクセルの単位でスクロール量を算出しています。つまり、200%にズームした場合、100ピクセルのスクロールが発生した場合、CSSピクセルでは50ピクセルしかスクロールしません。ですので、Retinaディスプレイを使用していなくても、ズームしている際の、JS実装の独自スクロール可能な要素のスクロール量はこの修正の影響を受け、デフォルトアクションのスクロール量に統一されるはずです。
なお、行単位、もしくはページ単位のスクロールは従来通りです。デフォルトアクションでもこれらはズーム後の行やページのサイズを参考に、スクロール量が算出されますので、ピクセルとの挙動の違いに注意してください。