这篇文章主要介绍了javascript监听鼠标滚轮事件浅析,使用具体例子说明,同时考虑了不同的浏览器,需要的朋友可以参考下

我们都见到过这些效果,用鼠标滚轮实现某个表单内的数字增加操作,或者滚轮控制某个按钮的左右,上下。这些都是通过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;
}

最新资讯
富士康取消部分国庆假期 24小时加紧生产iPhone 12

富士康取消部分国庆假

据报道,为了加紧生产iPhone 12,代工厂商富士康已经取消
微信小商店节前开放支持小商店推广、抢购、下单改价等功能

微信小商店节前开放支

为了进一步满足企业和个人全场景经营的需求,小商店将逐
搜狗宣布签订最终私有化协议:搜狗盘前涨2.54% 搜狐涨16.41%

搜狗宣布签订最终私有

搜狗宣布签订最终私有化协议,受此消息影响,搜狗盘前涨2.
谷歌再次妥协:希望欧盟尽早批准收购Fitbit交易

谷歌再次妥协:希望欧盟

欧盟委员会今日公布的一份文件显示,谷歌第二次向欧盟作
搜狗宣布签订最终私有化协议 预计交易将在2020年第四季度完成

搜狗宣布签订最终私有

搜狗发布公告称,已就私有化交易达成最终协议。预计该笔
马云:你今天不变革 十年后一定是数字脱贫的对象

马云:你今天不变革 十

在2020中国绿公司年会上,中国企业家俱乐部主席、阿里巴
最新文章
详解Vue的ref特性的使用

详解Vue的ref特性的使

这篇文章主要介绍了详解Vue的ref特性的使用,文中通过
vue学习笔记之slot插槽基本用法实例分析

vue学习笔记之slot插

这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结
vue跳转方式(打开新页面)及传参操作示例

vue跳转方式(打开新页

这篇文章主要介绍了vue跳转方式(打开新页面)及传参操作,
vue学习笔记之过滤器的基本使用方法实例分析

vue学习笔记之过滤器

这篇文章主要介绍了vue学习笔记之过滤器的基本使用方
js获取本日、本周、本月的时间代码

js获取本日、本周、本

本篇文章给大家分享的内容是利用js如何获取本日、本周
node crawler如何添加promise支持

node crawler如何添加

这篇文章主要介绍了node crawler如何添加promise支持,