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


Posted in Javascript onJune 30, 2014

滑轮滚动页面的事件在网页特效中进场遇到,但是在不同浏览器下的实现方式又不同。下面我实现的方法,兼容常见浏览器。

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。

Javascript 相关文章推荐
javascript 实现 秒杀,团购 倒计时展示的记录 分享
Jul 12 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
layui富文本编辑器前端无法取值的解决方法
Sep 18 Javascript
JS实现滑动插件
Jan 15 Javascript
JS实现时间校验的代码
May 25 Javascript
微信小程序收藏功能的实现代码
Jun 19 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
js实现的点击div区域外隐藏div区域
Jun 30 #Javascript
js实现特定位取反原理及示例
Jun 30 #Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 #Javascript
jQuery+ajax实现鼠标单击修改内容的思路
Jun 29 #Javascript
html文本框提示效果的示例代码
Jun 28 #Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 #Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 #Javascript
You might like
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
js面向对象编程总结
2017/02/16 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
初中班主任寄语
2014/04/04 职场文书
白血病捐款倡议书
2014/05/14 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
初中毕业生自我评价
2015/03/02 职场文书
简历自荐信范文
2015/03/09 职场文书
婚宴领导致辞
2015/07/28 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
Python OpenCV快速入门教程
2021/04/17 Python