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 call方法使用说明
Jan 11 Javascript
关于跨站脚本攻击问题
Dec 22 Javascript
js实现仿QQ秀换装效果的方法
Mar 04 Javascript
JQuery之proxy实现绑定代理方法
Aug 01 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
JQuery学习总结【二】
Dec 01 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
javascript实现下雨效果
Mar 27 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
vue地区选择组件教程详解
May 04 Javascript
JavaScript学习笔记之DOM基础操作实例小结
Jan 09 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
Sep 26 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
Terran剧情介绍
2020/03/14 星际争霸
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
JS input 数字验证代码
2009/07/30 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
详解重置Django migration的常见方式
2019/02/15 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
长辈证婚人证婚词
2014/01/09 职场文书
创业女性典型材料
2014/05/02 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
中队活动总结
2014/08/27 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
小学生成绩单评语
2014/12/31 职场文书
起诉状范本
2015/05/20 职场文书
暑假打工感想
2015/08/07 职场文书
Python first-order-model实现让照片动起来
2022/06/25 Python