Javascript鼠標滾輪事件兼容寫法

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

mousewheel事件對應的event對象包含一個wheelDelta屬性。用戶滾動鼠標滾輪時,wheelDelta的值是正負120的倍數。瀏覽器

值得注意的是,在opera9.5以前的版本,wheelDelta的正負號是顛倒的,這裏不作考慮bash

通常狀況下,監聽wheelDelta的正負值,就能夠肯定鼠標滾輪的滾動方向。ui

document.addEventListener('mousewheel',function(event){
	console.log( event.wheelDelta > 0 )
},false)	
複製代碼

2.DOMMouseScroll事件(兼容FireFox)spa

FireFox支持一個名爲DOMMouseScroll的相似事件,類比於mousewheel。不一樣的是,鼠標滾輪的信息保存在detail屬性裏面。還有一點,用戶滾動鼠標滾輪時,detail的值是正負3的倍數。code

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);
複製代碼
相關文章
相關標籤/搜索