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 table鼠标经过变色代码
Sep 27 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
JavaScript实现猜数字游戏
May 20 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编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php检测useragent版本示例
2014/03/24 PHP
详解YII关联查询
2016/01/10 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
javascript引用对象的方法
2007/01/11 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python中类型检查的详细介绍
2017/02/13 Python
python_mask_array的用法
2020/02/18 Python
python实现文法左递归的消除方法
2020/05/22 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
创新比赛获奖感言
2014/02/13 职场文书
行政专员的岗位职责
2014/03/10 职场文书
学校个人对照检查材料
2014/08/26 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
教学副校长工作总结
2015/08/13 职场文书
七年级思品教学反思
2016/02/20 职场文书