请看下面的代码:

<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>


问题是:如果我滚动鼠标滚轮一次,它将在Firefox中发出一次警报,而在IE / Chrome / Opera中发出两次。我认为这是内核问题,对吗?如何解决?

最佳答案

这是您的罪魁祸首:

window.onmousewheel=document.onmousewheel=scrollFunc;

在IE,Chrome,Opera和Safari中,您正在同时处理onmousewheeldocumentwindow事件。

您仅在Firefox中看到一个警报,因为您仅在此行中处理documentonmousewheel事件:

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

关于javascript - 鼠标滚轮事件差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14049162/

10-09 13:06