请看下面的代码:
<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中,您正在同时处理onmousewheel
和document
的window
事件。
您仅在Firefox中看到一个警报,因为您仅在此行中处理document
的onmousewheel
事件:
if(document.addEventListener){
document.addEventListener('DOMMouseScroll',scrollFunc,false);
}
关于javascript - 鼠标滚轮事件差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14049162/