JavaScript マウスホイールの値を取得する

最終更新日

Firefox以外でマウスホイールの値を取得するには、「mousewheel」イベントを検知します。ホイールがどの程度、開店したのかは、イベントハンドラに渡されるイベントオブジェクトの「delta」プロパティに入ります。Firefoxでは、マウスホイールが回転すると、「DOMMouseScroll」イベントが発生します。ホィールの回転量は、イベントオブジェクトの「detail」プロパティに入ります。Firefoxでは縦方向、横方向どちらに開店したか示す「axis」プロパティがあります。また、GoogleChromeやSafariなどのWebKit系では、縦方向と横方向の回転量は別々のプロパティに入ります。なお、ブラウザによってはスクロール可能な状態でないと値が取得できない場合があります。

 <body>
<script>
    window.addEventListener("load" , function(){

        var ele = document.getElementsByTagName("output")[0];
        //body要素のイベントをキャプチャー
        document.body.addEventListener("mousewheel",function(evt){
            //回転量を求める
            var delta = evt.wheelDelta;
            var deltaX = evt.wheelDeltaX;
            var deltaY = evt.wheelDeltaY;

            ele.innerHTML = "ホイール量:" + delta+"<br>";
            ele.innerHTML += "ホイール量X:" + deltaX+"<br>";
            ele.innerHTML += "ホイール量Y:" + deltaY+"<br>";
        },false);

        document.body.addEventListener("DOMMouseScroll",function(evt){
            //回転量を求める
            var delta = evt.detail;
            var deltaY = evt.axis;

            ele.innerHTML = "ホイール量:" + delta+"<br>";
            ele.innerHTML += "方向:" + axis+"<br>";
        },false);


    }, false);

</script>
<h1>マウスホィールの値</h1>
<output></output>
</body>

Google ChromeやSafariでは、回転量と左右の回転量がそれぞれ別のプロパティに入ります。

実行結果