原生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执行删除前的判断代码
Feb 18 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
jQuery实现在列表的首行添加数据
May 19 Javascript
javascript创建函数的20种方式汇总
Jun 23 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
完美实现js拖拽效果 return false用法详解
Jul 28 Javascript
highcharts 在angular中的使用示例代码
Sep 20 Javascript
详解react-redux插件入门
Apr 19 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
JS实现音乐钢琴特效
Jan 06 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集成FCK的函数代码
2008/09/27 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
javascript Demo模态窗口
2009/12/06 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
一套VC试题
2015/01/23 面试题
经典c++面试题三
2015/07/08 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
毕业论文评语大全
2014/04/29 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
初三英语教学计划
2015/01/23 职场文书
大四学生个人总结
2015/02/15 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
Oracle笔记
2021/04/05 Oracle
全新239军机修复记
2022/04/05 无线电