原生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 相关文章推荐
点击广告后才能获得下载地址
Oct 26 Javascript
greybox——不开新窗口看新的网页
Feb 20 Javascript
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 03 Javascript
基于jquery库的tab新形式使用
Nov 16 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
Javascript数组操作函数总结
Feb 05 Javascript
微信企业号开发之微信考勤百度地图定位
Sep 11 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
用js编写留言板
Mar 17 Javascript
公众号SVG动画交互实战代码
May 31 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
如何离线执行php任务
2017/02/21 PHP
jquery中文乱码的多种解决方法
2013/06/21 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
Bootstrap表单布局
2016/07/19 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python采集腾讯新闻实例
2014/07/10 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python实现五子棋游戏
2019/06/18 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
公司人事专员岗位职责
2014/08/11 职场文书
给校长的一封检讨书
2014/09/20 职场文书
公司给客户的感谢信
2015/01/23 职场文书
护士辞职信怎么写
2015/02/27 职场文书
团委工作总结2015
2015/04/02 职场文书
蜗居观后感
2015/06/11 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
《风筝》教学反思
2016/02/23 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫