原生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 相关文章推荐
用js脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
jQuery关于导航条背景切换效果实现示例
Sep 04 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
vue组件实现进度条效果
Jun 06 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
JavaScript的function函数详细介绍
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下批量挂马和批量清马代码
2011/02/27 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
深入分析php之面向对象
2013/05/15 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
php实现求相对时间函数
2015/06/15 PHP
简单的JS多重继承示例
2008/03/13 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
python实现文件的备份流程详解
2019/06/18 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Python操作Excel的学习笔记
2021/02/18 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
物业管理专业求职信
2014/06/11 职场文书
品质标语大全
2014/06/21 职场文书
运动会演讲稿200字
2014/08/25 职场文书
前台文员岗位职责
2015/02/04 职场文书
考博导师推荐信范文
2015/03/27 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python