您好,欢迎访问一九零五行业门户网

原生JS绑定滑轮滚动事件兼容常见浏览器_javascript技巧

滑轮滚动页面的事件在网页特效中进场遇到,但是在不同浏览器下的实现方式又不同。下面我实现的方法,兼容常见浏览器。
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。
其它类似信息

推荐信息