丑话说到前头:历来我们都被IE的兼容问题搞的欲仙欲死,不过这次世道变了,鼠标滚轮事件的兼容性批斗的是火狐;
探讨属性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(); }; }首先,事件处理函数要把事件传过来
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
第一类浏览器向下滚动返回负数,向上返回正数,第二类浏览器相反
留言评论或 QQ:3267047344