js滾輪事件需要注意的兼容性問題


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style> #div { width: 300px; height: 300px; background: red; } </style>
    <script> function addEvent(obj,sEv,fn){ if(obj.addEventListener){ return obj.addEventListener(sEv,fn,false); }else{ return obj.attachEvent('on' + sEv,fn); } } function addWheel(obj,fn){ function wheel(ev){ var oEvent = ev || event; var bDown = true; bDown = oEvent.wheelDelta?oEvent.wheelDelta > 0:oEvent.detail < 0; fn && fn(bDown); oEvent.preventDefault && oEvent.preventDefault(); return false; }
------------------------------------------------------------------
return false阻止瀏覽器默認行為,遇到綁定添加的事件的時候就失效了;
所有要用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 () {
var oDiv = 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>
<div id="div"></div>
</body>
</html>
滾輪事件的兼容性問題比較多,所以大家在實現這個效果的時候也要隨時測試兼容性的問題。
暫時整理的大概就這些,還有很多不足的地方,大家多提寶貴意見!^_^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM