解析javascript中鼠标滚轮事件


Posted in Javascript onMay 26, 2015

所有的现代浏览器都支持鼠标滚轮,并且在用户滚动滚轮时触发时间。浏览器通常使用鼠标滚轮滚动或缩放文档,但可以通过取消mousewheel事件来阻止这些默认操作。有一些互用性问题影响滚轮事件,但是编写跨平台的代码依旧可以行。除了Firefox之外的所有浏览器都支持“mousewheel”事件,但Firefox使用“DOMMouseScroll”,而3级DOM事件规范草案建议使用事件名“wheel”替代“mousewheel”。

document.body.onmousewheel = function(event){
  event = event || window.event;
  console.dir(event);
}

Firefox不支持mousewheel

document.body.addEventListener("DOMMouseScroll",function(event){
  console.dir(event);
})

以下滚轮向下滚动是chrome和IE9下面控制台输出

解析javascript中鼠标滚轮事件

解析javascript中鼠标滚轮事件

以下是滚轮向下滚动Firefox下面控制台输出

解析javascript中鼠标滚轮事件解析javascript中鼠标滚轮事件

从上面输出得出,可以使用非标准的DOMMouseScroll事件取代mousewheel,使用事件对象的detail属性取代wheelDetal。但是,detail属性值的缩放比率和正负符号不同于wheelDetal,detail值乘以-40和wheelDetal值相等。

在除了FireFox之外的浏览器下,滚动的上下滚动与否是下面这个wheelDelta有关。

解析javascript中鼠标滚轮事件

根据测试,在我的win7系统下,无论IE7, IE10, Opera12,或者是safari5.1,每次往下滚动event.wheelDelta值都是-120.

对于FireFox浏览器(Opera浏览器也有),判断鼠标滚动方向的属性为event.detail, 向下滚动值为3.
解析javascript中鼠标滚轮事件

需要注意的是,FireFox浏览器的方向判断的数值的正负与其他浏览器是相反的。FireFox浏览器向下滚动是正值,而其他浏览器是负值。

var isFirefox = (navigator.userAgent.indexOf("Firefox") !== -1);
if(isFirefox){
  element.addEventListener("DOMMouseScroll",wheelHandler,false);
}
element.onmousewheel = wheelHandler;
//element.onwheel = wheelHandler; //DOM3级wheel事件,经过测试IE9还是不支持,但是谷歌和火狐都支持,在谷歌内有wheelDelta在火狐里面有detail
function wheelHandler(event){ event = event || window.event; var delta = event.wheelDelta || detail*-30; }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
鼠标事件延时切换插件
Mar 12 Javascript
倒记时60刷新网页的js代码
Feb 18 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
Mar 26 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
Vue异步加载about组件
Oct 31 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
JS中字符串trim()使用示例
May 26 #Javascript
JSON字符串和对象之间的转换详解
May 26 #Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
May 25 #Javascript
Javascript实现飞动广告效果的方法
May 25 #Javascript
javascript自定义右键弹出菜单实现方法
May 25 #Javascript
JS+DIV实现鼠标划过切换层效果的方法
May 25 #Javascript
JavaScript实现仿网易通行证表单验证
May 25 #Javascript
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
TP5框架页面跳转样式操作示例
2020/04/05 PHP
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
python解析xml文件操作实例
2014/10/05 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python实现图书借阅系统
2019/02/20 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
春季运动会广播稿大全
2014/02/19 职场文书
开门红主持词
2014/04/02 职场文书
奉献演讲稿范文
2014/05/21 职场文书
新文化运动的基本口号
2014/06/21 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫
MySQL数据库 任意ip连接方法
2022/05/20 MySQL