js中鼠标滚轮事件跨浏览器详解

其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件。

/*IE注册事件*/

if(document.attachEvent){

document.attachEvent('onmousewheel',scrollFunc);

}

Firefox使用addEventListener添加滚轮事件

/*Firefox注册事件*/

if(document.addEventListener){

document.addEventListener('DOMMouseScroll',scrollFunc,false);

}

Safari与Chrome属于同一类型,可使用HTMLDOM方式添加事件

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

其中除Firefox外其余均可使用HTMLDOM方式添加事件,因此添加事件使用以下方式

/*注册事件*/

if(document.addEventListener){

document.addEventListener('DOMMouseScroll',scrollFunc,false);

}//W3C

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

detail与wheelDelta

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、Safari、Firefox、Chrome)中Firefox使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。

复制代码

1<p><labelfor="wheelDelta">滚动值:</label>(IE/Opera)<inputtype="text"id="wheelDelta"/></p>

2<p><labelfor="detail">滚动值:(Firefox)</label><inputtype="text"id="detail"/></p>

3<scripttype="text/javascript">

4varoTxt=document.getElementById("txt");

5/***********************

6*函数:判断滚轮滚动方向

7*作者:walkingp

8*参数:event

9*返回:滚轮方向1:向上-1:向下

10*************************/

11varscrollFunc=function(e){

12vardirect=0;

13e=e||window.event;

14

15vart1=document.getElementById("wheelDelta");

16vart2=document.getElementById("detail");

17if(e.wheelDelta){//IE/Opera/Chrome

18t1.value=e.wheelDelta;

19}elseif(e.detail){//Firefox

20t2.value=e.detail;

21}

22ScrollText(direct);

23}

24/*注册事件*/

25if(document.addEventListener){

26document.addEventListener('DOMMouseScroll',scrollFunc,false);

27}//W3C

28window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari

29</script>

相关推荐