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>
滚轮事件的兼容性问题比较多,所以大家在实现这个效果的时候也要随时测试兼容性的问题。
暂时整理的大概就这些,还有很多不足的地方,大家多提宝贵意见!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。