原生JS绑定滑轮滚动事件兼容常见浏览器
内容摘要
滑轮滚动页面的事件在网页特效中进场遇到,但是在不同浏览器下的实现方式又不同。下面我实现的方法,兼容常见浏览器。
function getData(event){
var e = event || window.e
function getData(event){
var e = event || window.e
文章正文
滑轮滚动页面的事件在网页特效中进场遇到,但是在不同浏览器下的实现方式又不同。下面我实现的方法,兼容常见浏览器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function getData(event){ var e = event || window.event; //获取滚动距离(FF每次滚动 data为3或者-3,其他为120或者-120) var data = e.detail || e.wheelDelta; alert(data); } //IE之外的绑定事件方法 if (document.addEventListener && !document.attachEvent) { document.addEventListener( 'mousewheel' ,getData); //FF绑定滚动事件 document.addEventListener( 'DOMMouseScroll' ,getData); } //IE else if (document.attachEvent && !document.addEventListener){ document.attachEvent( 'onmousewheel' ,getData); } else { window.onmousewheel = getData; } |
代码中值得注意的地方:
1 为什么使用document.addEventListener && !document.attachEvent来区分IE?
attachEvent和detachEvent是IE特有的绑定事件和解绑事件的方法,只有在IE中存在此方法。但是在IE9+浏览器中有实现了较为通用的addEventListener方法来绑定事件。浏览器中有document.addEventListener 方法就可以排除不是IE8及其以下版本的,但是包括了IE9+浏览器,所以后面使用 &&!document.attachEvent来排除IE9+浏览器。
2 值得注意的就是在FF浏览器中没有mousewheel事件,触发滚动的时间是DOMMouseScroll。
3 还有一点值得注意的就是在使用addEventListener绑定事件的时候,事件名前面不加on,而在IE中使用attachEvent绑定事件的时候需要加上on。
代码注释