js鼠标滚轮事件
来源:互联网 发布:mysql字段值累加 编辑:程序博客网 时间:2024/05/16 04:38
js鼠标滚轮事件
有时候我们想做的效果涉及到鼠标滚轮事件,比如全屏滑动或者鼠标滚动切换页面部分,再比如滚轮控制大小缩放,鼠标滚轮事件有浏览器兼容性问题,网上也有讲解,不过多数ctrl+c ctrl+v,有漏洞,不能轻易相信(包括这篇),强烈建议自己动手实践下
我的测试环境:谷歌,IEEdge,欧朋,火狐
丑话说到前头:历来我们都被IE的兼容问题搞的欲仙欲死,不过这次世道变了,鼠标滚轮事件的兼容性批斗的是火狐;
1.事件绑定
探讨属性document.onmousewheel:
类似object.onclick,是一个鼠标滚轮事件句柄;在谷歌,IE,欧朋中,document.onmousewheel类型为object,也就是存在这个句柄,现在我们把这些浏览器称为第一类浏览器;而在火狐中其类型为“undefined”,把火狐称为第二类浏览器。
- 第一类:谷歌,IE,欧朋
- 第二类:火狐
所以对于第一类浏览器可直接定义事件:
document.onmousewheel=function(){// 谷歌,IE,欧朋 myFunction(); };
而对于第二类浏览器:
document.addEventListener("DOMMouseScroll",myFunction,false)//火狐
所以,兼容方法:
if(typeof(document.onmousewheel) == "undefined"){ document.addEventListener("DOMMouseScroll",myFunction,false)//火狐 }else{ document.onmousewheel=function(){// 谷歌,IE,欧朋 myFunction(); }; }
2.事件数据处理
首先,事件处理函数要把事件传过来
function mouseToggle(e){ e= e || window.event;//火狐,IE,e不用赋值,谷歌,欧朋 e=window.event }
而对于谷歌和欧朋也可以不用给e赋值,前提要在绑定事件时把e传过来:
document.onmousewheel=function(e){ myFunction(e); };//个人感觉用上面的方法比较简洁
对于第一类浏览器,滚轮数据存储在e.wheelDelta:
- 向下滚动:e.wheelDelta返回-120
- 向上滚动:e.wheelDelta返回120
对于第二类浏览器滚轮数据存储在e.detail:
- 向下滚动:e.detail返回3
- 向上滚动:e.detail返回-3
第一类浏览器向下滚动返回负数,向上返回正数,第二类浏览器相反
事故:IE浏览器中每滚一次鼠标,事件会触发两次
完整代码:
if(typeof (document.onmousewheel) == "undefined"){ document.addEventListener("DOMMouseScroll",myFunction,false) }else{ document.onmousewheel=function(){ myFunction(); }; } function myFunction(e){ var direction; e = e || window.event; if(e.wheelDelta){ direction=e.wheelDelta; }else if(e.detail){ direction=e.detail; } if(direction == -120 || direction == 3){ direction = "向下"; }else if(direction == 120 || direction == -3){ direction = "向上"; } alert(direction) }
如有BUG还望指正:
留言评论或
QQ:3267047344
0 0
- 【Js】鼠标滚轮事件
- js鼠标滚轮事件
- js 鼠标滚轮事件
- JS事件-鼠标滚轮事件
- JS。某鼠标滚轮事件。
- js中的鼠标滚轮事件
- JS禁用鼠标滚轮事件
- JS禁用鼠标滚轮事件
- js的鼠标滚轮事件
- JS鼠标与滚轮事件
- js鼠标滚轮事件兼容
- js中鼠标滚轮事件详解
- js中鼠标滚轮事件详解
- 【js学习笔记-095】----鼠标滚轮事件
- js中鼠标滚轮事件详解
- js中鼠标滚轮事件详解
- js鼠标滚轮事件(mousewheel/DOMMouseScroll)
- js获取页面中的鼠标滚轮事件
- 在路上
- 安卓 Toast总结
- Android自动化之adb命令
- 【NOIP2016提高A组8.12】奇袭
- Kotlin语法(七)-属性和字段
- js鼠标滚轮事件
- 利用ViewDragHelper实现上拉加载更多与下拉刷新
- YUV图像旋转
- 替换字符串中连续出现的指定字符串
- t077宝物筛选
- Basic基础——数学,线代,概率基础
- LightOJ 1104 Birthday Paradox(生日悖论,思维)
- 1857. 最大值
- getchar用法