この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2014年3月)

2014年3月20日

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: (list)

MacのRetinaディスプレイモデルを使用していると、WheelEventdeltaXdeltaYが、ディスプレイの物理ピクセル数で返されるため、Javascriptで実装された、独自のスクロール可能な要素のスクロールスピードが速すぎる、というバグです。

この修正により、WheelEventは物理ピクセル値ではなく、CSSピクセル値で返すようになりました(deltaModeDOM_DELTA_PIXELの場合の話です、もちろん)。

なお、ピクセル単位でのスクロールは、現在のところ、Macでしか発生しませんので、結果的にはMac固有の修正になっています。

そして、ピクセル単位のホイールイベントは、あくまでも、デバイスピクセルの単位でスクロール量を算出しています。つまり、200%にズームした場合、100ピクセルのスクロールが発生した場合、CSSピクセルでは50ピクセルしかスクロールしません。ですので、Retinaディスプレイを使用していなくても、ズームしている際の、JS実装の独自スクロール可能な要素のスクロール量はこの修正の影響を受け、デフォルトアクションのスクロール量に統一されるはずです。

なお、行単位、もしくはページ単位のスクロールは従来通りです。デフォルトアクションでもこれらはズーム後の行やページのサイズを参考に、スクロール量が算出されますので、ピクセルとの挙動の違いに注意してください。

関連するかもしれないエントリ

bug-org 970141を含むエントリ