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学习笔记之jQuery的DOM操作
Dec 22 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
Js实现自定义右键行为
Mar 26 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
javascript常用的设计模式
Feb 09 Javascript
vue实现文章内容过长点击阅读全文功能的实例
Dec 28 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 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
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Pycharm更换python解释器的方法
2018/10/29 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
基于Django框架的权限组件rbac实例讲解
2019/08/31 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
Django中modelform组件实例用法总结
2020/02/10 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2016党员入党决心书
2015/09/22 职场文书
旅游安全责任协议书
2016/03/22 职场文书
python 命令行传参方法总结
2021/05/25 Python
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
python双向链表实例详解
2022/05/25 Python