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 相关文章推荐
JMenuTab简单使用说明
Mar 13 Javascript
25个非常棒的jQuery滑块插件和教程小结
Sep 02 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
Jquery实现搜索框提示功能示例代码
Aug 13 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
JavaScript面对国际化编程时的一些建议
Jun 24 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
Sep 28 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
JS如何把字符串转换成json
Feb 21 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
php中的异常和错误浅析
2017/05/03 PHP
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
跟老齐学Python之数据类型总结
2014/09/24 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
家长给小学生的评语
2014/01/30 职场文书
业务总经理岗位职责
2014/02/03 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
责任书范本
2014/08/25 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
大学生个人学年总结
2015/02/15 职场文书
行政司机岗位职责
2015/04/10 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python