Javascript 鼠标滚轮事件在ie中不起作用

Javascript 鼠标滚轮事件在ie中不起作用,javascript,Javascript,我正在开发一个应用程序,我需要跟踪鼠标滚轮的移动,但是我的功能没有像我在Internet Explorer中预期的那样工作。它适用于所有其他浏览器,但不适用于IE,你知道我做错了什么吗 JS var请求=true; var onmouseheelspin=函数(事件){ 如果(请求===true){ 请求=假; var nDelta=0; 如果(!event){event=window.event;} //交叉bowser处理事件数据,以简化增量(+1或-1) if(event.wheelDel

我正在开发一个应用程序,我需要跟踪鼠标滚轮的移动,但是我的功能没有像我在Internet Explorer中预期的那样工作。它适用于所有其他浏览器,但不适用于IE,你知道我做错了什么吗

JS

var请求=true;
var onmouseheelspin=函数(事件){
如果(请求===true){
请求=假;
var nDelta=0;
如果(!event){event=window.event;}
//交叉bowser处理事件数据,以简化增量(+1或-1)
if(event.wheelDelta){//IE和Opera
nDelta=事件。wheelDelta;
如果(window.opera){//opera的值颠倒了
nDelta=-nDelta;
}
}
else if(event.detail){//Mozilla FireFox
nDelta=-event.detail;
}
如果(nDelta>0){
zoomFun(1,事件);
}
如果(nDelta<0){
zoomFun(-1,事件);
}
if(event.preventDefault){//Mozilla FireFox
event.preventDefault();
}
event.returnValue=false;//取消默认操作
}
}
var zoomFun=函数(增量,e){
如果(增量>0){//放大
警报(“In”);
}否则{//缩小
警惕(“退出”);
}
请求=真;
}
var setupmouseweel=函数(){
//用于在Firefox中滚动鼠标
var elem=document.getElementById(“缩放”);
if(elem.addEventListener){//除IE版本9之前的所有浏览器
//Internet Explorer、Opera、Google Chrome和Safari
elem.addEventListener(“mousewheel”,onMouseWheelSpin,false);
//火狐
elem.addEventListener(“DOMMouseScroll”,onMouseWheelSpin,false);
}否则{
if(elem.attachEvent){//IE在版本9之前
elem.attachEvent(“onmousewheel”,onMouseWheelSpin);
}
}   
}
我在主体中调用setupmouseweel函数onload

<body onload="setupMouseWheel();">


谢谢你的帮助

要听鼠标滚轮,最好听
DOMMouseScroll
mouseweel
wheel
。最后一个是IE,也是唯一一个你没听的

我还将指出,jQuery有一个绑定多个事件的快捷方式:

 $(elem).on("DOMMouseScroll mousewheel wheel", onMouseWheelSpin);

更新:注意到尽管您将其标记为jQuery,但实际上并没有使用它。要在没有jQuery的情况下做到这一点,只需像其他人一样添加一个
轮子
事件监听器。

我终于找到了一种适合任何有类似问题的人的跨浏览器方法


噢,既然您使用的是jQuery,那么就应该使用
$(document.ready(function(){blah})而不是主体的
onload
。它不太可能干扰页面上的其他代码。我标记了jquery,以便可以扩展到那些可能有其他解决方案的人,但我尝试在不向代码添加太多内容的情况下使用javascript。谢谢你提供的信息,我现在就试试你的方法js和jquery实际上并没有解决IE中的问题,但我确实在mozilla网站上找到了一个非常好的跨浏览器方法谢谢你回答+1但没有IE8支持-(
 $(elem).on("DOMMouseScroll mousewheel wheel", onMouseWheelSpin);