原生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 第三章章节总结的例子
Mar 23 Javascript
Jquery下attr和removeAttr的使用方法
Dec 28 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
详解.vue文件解析的实现
Jun 11 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
Sep 24 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
vue中提示$index is not defined错误的解决方式
Sep 02 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/11/19 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
openPNE常用方法分享
2011/11/29 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
遍历jquery对象的代码分享
2011/11/02 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python同步windows和linux文件
2019/08/29 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python实现不规则图形填充的思路
2020/02/02 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python数据类型强制转换实例详解
2020/06/22 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
教师简历自我评价
2014/02/03 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
美容院员工规章制度
2015/08/05 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript