javascript监听鼠标滚轮事件浅析


Posted in Javascript onJune 05, 2014

我们都见到过这些效果,用鼠标滚轮实现某个表单内的数字增加减少操作,或者滚轮控制某个按钮的左右,上下滚动。这些都是通过js对鼠标滚轮的事件监听来实现的。今天这里介绍的是一点简单的js对于鼠标滚轮事件的监听。

不同浏览器不同的事件

首先,不同的浏览器有不同的滚轮事件。主要是有两种,onmousewheel(firefox不支持)和DOMMouseScroll(只有firefox支持),关于这两个事件这里不做详述,想要了解的朋友请移步:鼠标滚轮(mousewheel)和DOMMouseScroll事件。
另外在操作的过程中需要添加事件监听,代码如下:兼容firefox采用addEventListener监听

/*注册事件*/

if(document.addEventListener){

document.addEventListener('DOMMouseScroll',scrollFunc,false);

}//W3C

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

js返回数值判断滚轮上下

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个 值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。
具体的代码如下所示:

<label for="wheelDelta">滚动值:</label>(IE/Opera)<input type="text" id="wheelDelta"/>

<label for="detail">滚动值:(Firefox)</label><input type="text" id="detail"/>

<script type="text/javascript"> 

var scrollFunc=function(e){ 

    e=e || window.event; 

    var t1=document.getElementById("wheelDelta"); 

    var t2=document.getElementById("detail"); 

    if(e.wheelDelta){//IE/Opera/Chrome 

        t1.value=e.wheelDelta; 

    }else if(e.detail){//Firefox 

        t2.value=e.detail; 

    } 

} 

/*注册事件*/ 

if(document.addEventListener){ 

    document.addEventListener('DOMMouseScroll',scrollFunc,false); 

}//W3C 

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome 

</script>

通过运行上述代码我们可以看到:

在非firefox浏览器中,滚轮向上滚动返回的数值是120,向下滚动返回-120

而在firefox浏览器中,滚轮向上滚动返回的数值是-3,向下滚动返回3

代码部分如下,e.wheelDelta是判断是否为非firefox浏览器,e.detail为firefox浏览器

if(e.wheelDelta){//IE/Opera/Chrome

t1.value=e.wheelDelta;

}else if(e.detail){//Firefox

t2.value=e.detail;

}

 PS:这里再为大家推荐一款关于JS事件的在线查询工具,归纳总结了JS常用的事件类型与函数功能:

javascript事件与功能说明大全:

Javascript 相关文章推荐
jQuery 创建Dom元素
May 07 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
Jan 20 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
AngularJS中run方法的巧妙运用
Jan 04 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
Feb 27 Javascript
工作中常用到的ES6语法
Sep 04 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
Vue如何获取数据列表展示
Dec 11 Javascript
详解JavaScript语法对{}处理的坑爹之处
Jun 05 #Javascript
封装了一个支持匿名函数的Javascript事件监听器
Jun 05 #Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 #Javascript
NODE.JS加密模块CRYPTO常用方法介绍
Jun 05 #Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 #Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 #Javascript
javascript移动设备Web开发中对touch事件的封装实例
Jun 05 #Javascript
You might like
坏狼的PHP学习教程之第1天
2008/06/15 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
javascript静态的url如何传递
2007/05/03 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python with语句的原理与用法详解
2020/03/30 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
应聘医药代表职位求职信
2013/10/21 职场文书
自我评价中英文语句
2013/11/30 职场文书
学期评语大全
2014/04/30 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
军训个人总结
2015/03/03 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
python利用while求100内的整数和方式
2021/11/07 Python
oracle数据库去除重复数据
2022/05/20 Oracle
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技