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 相关文章推荐
js URL参数的拼接方法比较
Feb 15 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
利用JS实现数字增长
Jul 28 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
微信小程序 Animation实现图片旋转动画示例
Aug 22 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 Javascript
vuecli项目构建SSR服务端渲染的实现
Oct 30 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
ES6学习教程之Promise用法详解
Nov 22 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
资料注册后发信小技巧
2006/10/09 PHP
处理单名多值表单的详解
2013/06/08 PHP
php中异常处理方法小结
2015/01/09 PHP
php PDO异常处理详解
2016/11/20 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python实现顺序表的简单代码
2018/09/28 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Python项目打包成二进制的方法
2020/12/30 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
EJB3.1都有哪些改进
2012/11/17 面试题
高中毕业生自我鉴定范文
2013/09/26 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
2019思想汇报范文
2019/05/21 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
Python List remove()实例用法详解
2021/08/02 Python