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 相关文章推荐
Prototype使用指南之selector.js说明
Oct 26 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
Feb 06 Javascript
jquery的index方法实现tab效果
Feb 16 Javascript
javascript使用appendChild追加节点实例
Jan 12 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 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通用检测函数集合
2011/02/08 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
php制作动态随机验证码
2015/02/12 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python requests发送post请求的一些疑点
2018/05/20 Python
Python3标准库总结
2019/02/19 Python
python实现单链表的方法示例
2019/09/03 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
纽约海:Sea New York
2018/11/04 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
个人贷款授权委托书样本
2014/10/07 职场文书
学校计划生育责任书
2015/05/09 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL
改造DE1103三步曲
2022/04/07 无线电