1

次のコードを見てください。

<script type="text/javascript">
var scrollFunc=function(e){
    var direct=0;
    e=e || window.event;

    if(e.wheelDelta){//IE/Opera/Chrome 
        userMouse(e.wheelDelta);
    }else if(e.detail){//Firefox
        userMouse(e.wheelDelta);
    }
}

if(document.addEventListener){
    document.addEventListener('DOMMouseScroll',scrollFunc,false);
}//W3C

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

function userMouse(flage){
    if(flage == 3){
        alert("firefox UP!");
    }else if(flage == -3){
        alert("firefox DOWN!");
    }else if(flage == 120){
        alert("IE UP!");
    }else if(flage == -120){
        alert("IE DOWN!");
    }
}
</script>

問題は、マウスホイールを1回回すと、Firefoxでは1回、IE / Chrome / Operaでは2回アラートが表示されるということです。カーネルの問題だと思いますが、どうすれば解決できますか?

4

1 に答える 1

3

これがあなたの犯人です:

window.onmousewheel=document.onmousewheel=scrollFunc;

IE、Chrome、Opera、Safariでは、とのonmousewheel両方のイベントを処理しています。documentwindow

Firefoxで表示されるアラートは1つだけです。これは、次の行でdocumentonmousewheelイベントのみを処理しているためです。

 if(document.addEventListener){
      document.addEventListener('DOMMouseScroll',scrollFunc,false);
 }
于 2012-12-27T04:34:50.953 に答える