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 相关文章推荐
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
详解react服务端渲染(同构)的方法
Sep 21 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
js+canvas绘制图形验证码
Sep 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
一漂亮的PHP图片验证码实例
2014/03/21 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
React如何避免重渲染
2018/04/10 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
什么时候用assert
2015/05/08 面试题
初中物理教学反思
2014/01/14 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
博士导师推荐信
2015/03/25 职场文书
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
Python制作表白爱心合集
2022/01/22 Python