原生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的offset、client、scroll使用方法详解
Dec 25 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 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/10/09 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
python3 爬取图片的实例代码
2018/11/06 Python
python构建基础的爬虫教学
2018/12/23 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Python input函数使用实例解析
2019/11/22 Python
Pygame的程序开始示例代码
2020/05/07 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
.net开发工程师面试题
2014/02/25 面试题
优秀毕业大学生推荐信
2013/11/13 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python