ホイール スクロールのイベントは Web ページの特殊効果で発生しますが、実装方法はブラウザーによって異なります。以下で実装したメソッドは一般的なブラウザと互換性があります。
function getData(event){ var e = event || window.event; //获取滚动距离(FF每次滚动 data为3或者-3,其他为120或者-120) var data = e.detail || e.wheelDelta; alert(data); } //IE之外的绑定事件方法 if(document.addEventListener && !document.attachEvent) { document.addEventListener('mousewheel',getData); //FF绑定滚动事件 document.addEventListener('DOMMouseScroll',getData); } //IE else if(document.attachEvent && !document.addEventListener){ document.attachEvent('onmousewheel',getData); }else{ window.onmousewheel = getData; }
コード内の注目すべき箇所:
1 IE を区別するために document.addEventListener && !document.attachEvent を使用するのはなぜですか?
attachEvent と detachEvent は、イベントのバインドとバインド解除のための IE 固有のメソッドです。このメソッドは IE にのみ存在します。ただし、IE9 ブラウザでは、イベントをバインドするために、より一般的な addEventListener メソッドが実装されています。ブラウザーに document.addEventListener メソッドがある場合、IE8 以下ではないバージョンを除外できますが、IE9 ブラウザーは含まれるため、後で &&!document.attachEvent を使用して IE9 ブラウザーを除外します。
2 FF ブラウザにはマウスホイール イベントがなく、スクロールをトリガーする時間が DOMMouseScroll であることに注意してください。
3 もう 1 つの注目すべき点は、addEventListener を使用してイベントをバインドする場合、on はイベント名の前に追加されませんが、attachEvent を使用して IE でイベントをバインドする場合は、on が必要であることです。