この記事では、JavaScript でのマウス ホイール イベントの無効化に関する関連情報を主に紹介します。必要な方は参考にしてください。
通常、IE の互換性に関しては下位バージョンの互換性を調整しますが、今回はブラウザの下位バージョンが機能しないためではありません。それは、Firefox が行き過ぎていて、他のブラウザのエクスペリエンスを完全に無視しているためです。 Firefox を除くすべてのブラウザは、MouseWheel イベントを使用してマウス ホイールの応答を処理できます。ただし、Firefox は MouseWheel をサポートしておらず、Firefox 以外の他のブラウザと互換性のない無意味な DOMMouseScroll を使用します。つまり、Firefox はマウス ホイール イベントの処理に DOMMouseScroll のみを使用できます。 Firefox 以外では MouseWheel のみを使用できます。これら 2 つのイベントの原理は異なり、処理されるデータも異なります。
- varfirefox=navigator.userAgent.indexOf('Firefox')!=-1;
- firefox?img.addEventListener('DOMMouseScroll',MouseWheel,false):
- (img.onmousewheel=マウスホイール);
- functionMouseWheel(e){
- e=e||ウィンドウ.イベント;
- if(e.stopPropagation)e.stopPropagation();
- elsee.cancelBubble=true;
- if(e.preventDefault)e.preventDefault();
- elsee.returnValue=false;
- }
完全なコードを見てみましょう
- <!DOCTYPEhtml>
- <スタイル>
- スパン{font:14px/20pxマイクロソフト弥平;}
- #カウンタ{
- 幅:50ピクセル;高さ:20ピクセル;
- ボーダー:1pxsolid#CCC;
- 背景:#F9F9F9;
- フォント:14px/20pxConsolas;
- テキスト整列:中央;
- マージン:10px;
- }
- </スタイル>
- <span>マウスホイールを使用して値を調整します</span><br/>
- <divid=counter>0</div>
- <スクリプト>
- //ブラウザを判断する
- varisIE=navigator.userAgent.match(/MSIE(/d)/i);
- isIE=isIE?isIE[1]:未定義;
- varisFF=/FireFox/i.test(navigator.userAgent);
- //要素を取得する
- varcounter=document.getElementById(counter);
- //マウスホイールイベント
- if(isIE<9)//従来のブラウザは MouseWheel イベントを使用します
- counter.attachEvent(onmousewheel,function(){
- //マウスホイールがスクロールする距離を計算します
- // 1 つのグリッドには 3 つのラインがあり、各ラインは 40 ピクセルなので、120 で割ります。
- varv=event.wheelDelta/120;
- counter.innerHTML=counter.innerHTML*1+v;
- // ブラウザのデフォルトメソッドをブロックする
- false を返します。
- });
- elseif(!isFF)//Firefox を除く最新のブラウザも MouseWheel イベントを使用します
- counter.addEventListener(mousewheel,function(e){
- //マウスホイールがスクロールする距離を計算します
- varv=e.wheelDelta/120;
- counter.innerHTML=counter.innerHTML*1+v;
- // ブラウザのデフォルトメソッドをブロックする
- e.preventDefault();
- }、間違い);
- else//奇妙な Firefox は DOMMouseScroll イベントを使用します
- counter.addEventListener(DOMMouseScroll,function(e){
- //マウスホイールがスクロールする距離を計算します
- //1つのグリッドは3行ですが、ピクセルとの違いは負の値であることに注意してください
- varv=-e.detail/3;
- counter.innerHTML=counter.innerHTML*1+v;
- // ブラウザのデフォルトメソッドをブロックする
- e.preventDefault();
- }、間違い);
- </script>
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。