js鼠标滚轮事件如何做兼容

兼容谷歌,火狐,IE

阅读 3.5k
3 个回答


window.onload=function()
    {
        var oBox=document.getElementById('box');
        
        wheel(oBox,function(down){
            alert(down);
        });
    }
    
    function wheel(obj,wheelFn)
    {
        window.navigator.userAgent.indexOf('Firefox')!=-1 ? obj.addEventListener('DOMMouseScroll',fn,false) : addEvent(obj,'mousewheel',fn);
        
        function fn(ev)
        {
            var oEvent=ev||event;
            var down=oEvent.wheelDelta ? down=oEvent.wheelDelta<0 : down=oEvent.detail>0;
            ev.preventDefault&&ev.preventDefault();
            wheelFn&&wheelFn(down);
            return false;
        }
    }
    
    function addEvent(obj,sEv,fn)
    {
         obj.addEventListener ? obj.addEventListener(sEv,fn,false) : obj.attachEvent('on'+sEv,fn);
    }
const mousewheelEventName = !!window.navigator.userAgent.match(/firefox/i) ? 'DOMMouseScroll' : 'mousewheel';
// 滚轮事件
document.addEventListener(mousewheelEventName, (e) => {
    const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
    if (delta > 1) {
      console.log('往前');
      // 以下就是你要写的自定义代码
    }else{
      console.log('往后');
      // 以下就是你要写的自定义代码;
    }
}, { passive: false });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题