js鼠标滚轮事件(mousewheel/DOMMouseScroll)

简介:

鼠标滚轮事件主要分为FireFox派和其他派。

1、mousewheel与DOMMouseScroll

1、mousewheel

IE6首先实现了mousewheel事件。此后,Opera、Chrome和Safari也都实现了这个事件。当用户通过鼠标滚轮与页面交互、在垂直方向上滚动页面时(无论向上还是向下),就会触发mousewheel事件。这个事件可以在任何元素上面触发,最终会冒泡到document(IE8)或window(IE9、Opera、Chrome及Safari)对象。与mousewheel事件对应的event对象包含鼠标事件的所有标准信息外,还包含一个特殊的wheelDelta属性。当用户向上滚动鼠标滚轮时,wheelDelta是120的倍数;当用户向下滚动鼠标滚轮时,wheelDelta是-120的倍数。

2、DOMMouseScroll

Firefox支持一个名为DOMMouseScroll的类似事件,也是在鼠标滚轮滚动时触发。与mousewheel事件一样,DOMMouseScroll也被视为鼠标事件,因而包含于鼠标事件有关的所有属性。而有关鼠标滚轮的信息则保存在detail属性中,当向上滚动鼠标滚轮时,这个属性的值是-3的倍数,当向下滚动鼠标滚轮时,这个属性的值是3的倍数。火狐内核FireFox浏览器的方向判断的数值的正负与其他浏览器是相反的。FireFox浏览器向下滚动是正值,而其他浏览器是负值。

2、具体实现

1、javascript
<script>
    !function(){
        varEventUtil={
            addHandler:function(element,type,handler){
                if(element.addEventListener){
                    element.addEventListener(type,handler,false);
                }elseif(element.attachEvent){
                    element.attachEvent('on'+type,handler);
                }else{
                    element['on'+type]=handler;
                }
            },
            getEvent:function(event){
                returnevent?event:window.event;
            },
            stopPropagation:function(event){
                event=event||window.event;
                if(event.stopPropagation){
                    event.stopPropagation();
                }else{
                    event.cancelBubble=true;
                }
            }
        };
 
        functionhandleMouseWheel(event){
            EventUtil.stopPropagation(event);
            event=EventUtil.getEvent(event);
            varvalue=event.wheelDelta||-event.detail;
            vardelta=Math.max(-1,Math.min(1,value));
            console.log(delta<0?'down':'up');
        }
 
        EventUtil.addHandler(document,'mousewheel',handleMouseWheel);
        EventUtil.addHandler(document,'DOMMouseScroll',handleMouseWheel);
    }();
</script>




2、jquery

2
3
4
5
6
7
8
9
10
11
12
13
14
15
<scriptsrc="//static.ydcss.com/libs/jquery/1.11.2/jquery.js"></script>
<script>
    !function($){
        $(document).on('mousewheel DOMMouseScroll',function(e){
            //WebKit内核,Trident内核 => mousewheel
            //Gecko内核 => DOMMouseScroll
            e.preventDefault();
            varvalue=e.originalEvent.wheelDelta||-e.originalEvent.detail;
            //e.originalEvent.wheelDelta => 120(up) or -120(down) 谷歌IE内核
            //e.originalEvent.detail => -3(up) or 3(down) 火狐内核
            vardelta=Math.max(-1,Math.min(1,value));
            console.log(delta<0?'down':'up');
        });
    }(jQuery);
</script>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值