鼠标滚轮事件差异

时间:2012-12-27 03:52:13

标签: javascript jquery mouseevent mousewheel

请查看以下代码:

<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中会发出两次警报。我认为这是内核问题,对吧?我该如何解决?< / p>

1 个答案:

答案 0 :(得分:3)

这是你的罪魁祸首:

window.onmousewheel=document.onmousewheel=scrollFunc;

在IE,Chrome,Opera和Safari中,您正在为onmousewheeldocument处理window事件。

您只在Firefox中看到一个提醒,因为您只在此处处理document的{​​{1}}事件:

onmousewheel