HTMLでマウスホイールイベントonmousewheelを処理する方法

高洛峰
リリース: 2016-12-07 10:44:32
オリジナル
1376 人が閲覧しました

スクロール ホイール イベントはブラウザによって若干異なります。Firefox などでは、addEventListener メソッドを使用して DomMouseScroll イベントをバインドすることもできます。詳しく説明します。

Firefox は DOMMouseScroll を使用し、他のブラウザはマウスホイールを使用します。スクロール イベントがトリガーされると、Firefox はdetail属性を使用してホイール情報を取得し、他のブラウザは WheelDelta を使用します。なぜ他のメーカーがこの問題に関して Microsoft とこれほど一致しているのかわかりません。 Firefox は、addEventListener メソッドを使用して DomMouseScroll イベントをバインドできます。

elem.addEventListener('DOMMouseScroll', func, false); IE およびその他の主流ブラウザは、従来のイベント バインディング モデルを使用できます。ただし、IE 独自のattachEvent メソッドは使用しないでください。他の主流ブラウザは Microsoft のメソッドを認識しません。

Firefoxのマウスホイールの上スクロールは-3、下スクロールは3

IEマウスホイールの上スクロールは120、下スクロールは-120

Safariマウスホイールの上スクロールは360、下スクロールは-360

Operaのマウスホイール上は 120 までスクロールし、下は -120 までスクロールします

Chrome のマウス ホイールは上まで 120 までスクロールし、下は -120 までスクロールします

誰かが Safari でテストを行いました。「円をスクロールするだけの場合、値は +-0.1 です。もう少し速くスクロールすると (さらに数回スクロールすると)、この値は大きくなります。これは、Mac OS では 1 回スクロールすると、ブラウザは 1 ピクセルスクロールし、3 回スクロールします。 30 ピクセルスクロールします。」同時に、彼は Camino (Gecko をベースにしたカーネル エンジン) についても研究しました。「Safari と同様 (+- 0.3 ~ +-Infinity)、Firefox と同じカーネル エンジンを使用していますが、デルタ値は + だけです」 -2.666666 Float、スクロール速度に関係なく

私のテストの後、IE/Opera は同じタイプです。attachEvent を使用してホイール イベント

/*IE注册事件*/ 
if(document.attachEvent){ 
  document.attachEvent('onmousewheel',scrollFunc); 
}
ログイン後にコピー

を追加します。

Firefox は addEventListener を使用してホイール イベント

を追加します。

/*Firefox注册事件*/ 
if(document.addEventListener){ 
  document.addEventListener('DOMMouseScroll',scrollFunc,false); 
}
ログイン後にコピー

Safari と Chrome は同じタイプで、HTML DOM を使用してイベントを追加できます

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

Firefox を除くすべてそのうちの 1 つは HTML DOM を使用してイベントを追加できるため、次のメソッドを使用してイベントを追加します

ホイールの互換性もブラウザで考慮する必要があります。現在、5 つの主要なブラウザ (IE、Opera、Safari、Firefox、Chrome) では、Firefox は詳細を使用し、他の 4 つのカテゴリは WheelDelta を使用します。この 2 つのカテゴリは値が一致していないだけであり、これらは同じ意味を持ちます。それぞれ 2 つの値をとり、detail は ±3 のみ、wheelDelta は ±120 のみをとり、正の数値は Up として表され、負の数値は Down を意味します

/*注册事件*/ 
if(document.addEventListener){ 
  document.addEventListener('DOMMouseScroll',scrollFunc,false); 
}//W3C 
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート