Javascript鼠标滚轮事件兼容写法

1.mousewheel事件(兼容opera,chrome,safari,IE)

mousewheel事件对应的event对象包含一个wheelDelta属性。用户滚动鼠标滚轮时,wheelDelta的值是正负120的倍数。

值得注意的是,在opera9.5之前的版本,wheelDelta的正负号是颠倒的,这里不做考虑

一般情况下,监听wheelDelta的正负值,就可以确定鼠标滚轮的滚动方向。

document.addEventListener('mousewheel',function(event){
	console.log( event.wheelDelta > 0 )
},false)	
复制代码

2.DOMMouseScroll事件(兼容FireFox)

FireFox支持一个名为DOMMouseScroll的类似事件,类比于mousewheel。不同的是,鼠标滚轮的信息保存在detail属性里面。还有一点,用户滚动鼠标滚轮时,detail的值是正负3的倍数。

document.addEventListener('DOMMouseScroll',function(event){
	console.log( event.detail > 0 )
},false)
复制代码

3.跨浏览器兼容写法

var eventHandle = {
	getEvent: function(event){
		return event || window.event;
	},
	addEvent: function(element, type, handler){
		if(element.addEventListener){
			element.addEventListener(type, handler, false);
		}
		else if(element.attachEvent){
			element.attachEvent('on'+type, handler);
		}else{
			element['on'+type] = handler;
		}
	},
	getWheelDelta: function(event){
		return event.wheelDelta ? event.wheelDelta : (-event.detail)*40;
	}
}

function mouseHandle(event){
	event = eventHandle.getEvent(event);
	var delta = eventHandle.getWheelDelta(event);
	console.log( delta )
}


eventHandle.addEvent(document, 'mousewheel', mouseHandle);
eventHandle.addEvent(document, 'DOMMouseScroll', mouseHandle);
复制代码

转载于:https://juejin.im/post/5cc7ab876fb9a0322758c75c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值