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