原生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 相关文章推荐
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
Jan 16 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 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初学者头疼问题总结
2006/07/08 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
PHP重载基础知识回顾
2020/09/10 PHP
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
vue中实现左右联动的效果
2018/06/22 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python循环语句中else的用法总结
2016/09/11 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Python input函数使用实例解析
2019/11/22 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
办公自动化专业大学生职业规划书
2014/03/06 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
环保宣传语大全
2015/07/13 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书