js滚轮事件兼容性问题需要注意哪些
本文实例为大家解析了js滚轮事件需要注意的兼容性问题,供大家参考,具体内容如下
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>Title</title> <style> #div{ width:300px; height:300px; background:red; } </style> <script> functionaddEvent(obj,sEv,fn){ if(obj.addEventListener){ returnobj.addEventListener(sEv,fn,false); }else{ returnobj.attachEvent('on'+sEv,fn); } } functionaddWheel(obj,fn){ functionwheel(ev){ varoEvent=ev||event; varbDown=true; bDown=oEvent.wheelDelta?oEvent.wheelDelta>0:oEvent.detail<0; fn&&fn(bDown); oEvent.preventDefault&&oEvent.preventDefault(); returnfalse; } ------------------------------------------------------------------ returnfalse阻止浏览器默认行为,遇到绑定添加的事件的时候就失效了; 所有要用oEvent.preventDefault();在使用此方法前要做判断; ------------------------------------------------------------------ if(window.navigator.userAgent.indexOf('Firefox')!=-1){ obj.addEventListener('DOMMouseScroll',wheel,false);注:所有以DOM开头的只能通过事件绑定的形式添加此事件; }else{ addEvent(obj,'mousewheel',wheel); } } ------------------------------------------------------------------------------------------------- obj.onmousewheel:滚动鼠标滚轮的时候触发;兼容IE系列和chrome; DOMMouseScroll:只能通过事件绑定的形式添加此事件;只兼容FF; 兼容性问题解决方案:判断浏览器; oEvent.wheelDelta:不兼容FF;火狐下报undefined; chrome&&IE: 下:-120;//以具体弹出数字为准 上:120; oEvent.detail: FF: 下:3;//以具体弹出数字为准 --------------------------------------------------------------------------------------------------- window.onload=function(){ varoDiv=document.getElementById('div'); addWheel(oDiv,function(bDown){ oDiv.onmousewheel=null; if(bDown){ oDiv.style.height=oDiv.offsetHeight-10+'px'; }else{ oDiv.style.height=oDiv.offsetHeight+10+'px'; } }); } </script> </head> <body> <divid="div"></div> </body> </html>
滚轮事件的兼容性问题比较多,所以大家在实现这个效果的时候也要随时测试兼容性的问题。
暂时整理的大概就这些,还有很多不足的地方,大家多提宝贵意见!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。