原生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 相关文章推荐
Confirmer JQuery确认对话框组件
Jun 09 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
Jan 03 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 Javascript
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导出CSV抽象类实例
2014/09/24 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
vue登录注册实例详解
2019/09/14 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
js实现点击生成随机div
2020/01/16 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
Python数据集切分实例
2018/12/08 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
python3实现单目标粒子群算法
2019/11/14 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
django下创建多个app并设置urls方法
2020/08/02 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
高三上学期学习自我评价
2014/04/23 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
2014离婚协议书范文
2014/09/10 职场文书
2015年度党员个人总结
2015/02/14 职场文书
婚宴父母致辞
2015/07/27 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
小学三年级语文教学反思
2016/03/03 职场文书