js滾輪事件相容性問題需要注意哪些,js滾輪事件相容性
本文執行個體為大家解析了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;Firefox下報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>
滾輪事件的相容性問題比較多,所以大家在實現這個效果的時候也要隨時測試相容性的問題。
暫時整理的大概就這些,還有很多不足的地方,大家多提寶貴意見!
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。