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实现下拉菜单效果的代码
Jul 25 Javascript
JS回调函数的应用简单实例
Sep 17 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
Oct 29 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
jQuery基础知识点总结(DOM操作)
Jun 01 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
Oct 23 Javascript
总结js函数相关知识点
Feb 27 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
Dec 16 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
Nest.js参数校验和自定义返回数据格式详解
Mar 29 Javascript
react中的DOM操作实现
Jun 30 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
php Session无效分析资料整理
2016/11/29 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
javascript 计算两个整数的百分比值
2009/12/26 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python实现微信远程控制电脑
2018/02/22 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
秋季婚礼证婚词
2014/01/11 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
绿色环保口号
2014/06/12 职场文书
战马观后感
2015/06/08 职场文书
团结主题班会
2015/08/13 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
MySQL慢查询优化解决问题
2022/03/17 MySQL