2013-02-17 15 views
17

私はマウスホイールイベントのためのきれいで素敵なJavaScriptを用意しています.JSフレームワークなしで、古くなったバージョンのレガシーコードのない一般的なブラウザの最新バージョンのみをサポートしています。最新のブラウザのマウスホイールイベント

マウスホイールイベントはうまく説明されていますhere。現在の最新バージョンのブラウザを簡単にする方法は?

私はそれをテストするためにすべてのブラウザにアクセスできませんので、caniuse.comは私にとって大きな助けとなります。悲しいかな、マウスホイールはそこに言及されていません。

デレクのコメントに基づき、私はこの解決策を書いた。それはすべてのブラウザで有効ですか?

someObject.addEventListener("onwheel" in document ? "wheel" : "mousewheel", function(e) { 
    e.wheel = e.deltaY ? -e.deltaY : e.wheelDelta/40; 
    // custom code 
}); 
+2

ChromeとIEのサポート[ 'MouseWheelEvent'](https://developer.mozilla.org/en-US/docs/DOM/MouseWheelEvent)、Firefoxのサポートしていますが、[' WheelEvent'](https://でdeveloper.mozilla.org/en-US/docs/DOM/WheelEvent)。ブラウザー間で聞く場合は、[ここ](https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel#Listening_to_this_event_across_browser)を参照してください。 –

+0

*「すべてのブラウザで有効ですか?」*。あなた自身でそれをテストすることはできませんか? –

+1

Derekのポイントに追加されました。このような場合は、ブラウザの互換性を実際に評価する必要があります。あなたはModernizr(http://www.modernizr.com)でそれを行うことができます。あなたの人生はもっと楽になります:) –

答えて

25

ここでこれを説明記事の、および実施例を与える:

http://www.sitepoint.com/html5-javascript-mouse-wheel/

関連コード、マイナスイメージのサイズ変更について具体的な例:

var myitem = document.getElementById("myItem"); 
if (myitem.addEventListener) 
{ 
    // IE9, Chrome, Safari, Opera 
    myitem.addEventListener("mousewheel", MouseWheelHandler, false); 
    // Firefox 
    myitem.addEventListener("DOMMouseScroll", MouseWheelHandler, false); 
} 
// IE 6/7/8 
else 
{ 
    myitem.attachEvent("onmousewheel", MouseWheelHandler); 
} 

function MouseWheelHandler(e) 
{ 
    // cross-browser wheel delta 
    var e = window.event || e; // old IE support 
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); 

    return false; 
} 
+1

優れた答え。もっと注意が必要です。この問題に関する多くの不完全な回答、 – Terrance00

1

マウスホイールイベントは非標準であり、MDN recommendwheel eventです。

var item = document.getElementById('item') 
item.addEventListener('mousewheel', function(e) { 
    console.log('event', e) 
}, false) 
関連する問題