1. 程式人生 > >四十、滑鼠滾軸、滾動條事件

四十、滑鼠滾軸、滾動條事件

一、滑鼠滾軸事件 存在瀏覽器相容問題

說明:當用戶通過滑鼠滾輪與頁面互動、在垂直方向上滾動頁面時(上/下),就會觸發滾軸事件,且這個事件可以在任何元素上觸發,最終會冒泡到document(IE)或window(Opera、Chrome和Safari)物件。

1.在IEOpera、Chrome和Safari中滑鼠滾軸事件為:onmousewheel  當轉動滑鼠滾輪時執行指令碼

判斷滾動方向:在mousewheel事件中有一個wheelDelta屬性,當滾軸向上滑動時,其值為120,當滾軸向下滑動時,其值為-120。根據這個屬性返回的值,即可判斷當前滾軸的滑動方向。


2.在火狐中滑鼠滾軸事件為:DOMMouseScroll 

判斷滾動方法:在火狐中沒有wheelDelta屬性,但是火狐中存在另一個類似的detail屬性,當滾軸向上滑動時,其值為-3,當滾軸向下滑動時,其值為3。

簡單的測試相容程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body,html{
            height: 8000px;
            width: 100%;
        }
    </style>
</head>
<body>
<script>
    //相容滾軸事件
    document.onmousewheel=fun; //IE、Opera、Chrome和Safari

    if(document.addEventListener){ //火狐
        document.addEventListener("DOMMouseScroll",fun);
    }

    //執行函式
    function fun(event){
        event = event || window.event; //相容性

        if(event.wheelDelta){ //IE、Opera、Chrome和Safari
            if(event.wheelDelta>0){
                console.log("向上")
            }else {
                console.log("向下")
            }
            //console.log(event.wheelDelta);
        }else { //火狐
            if(event.detail>0){
                console.log("向下")
            }else {
                console.log("向上")
            }
            //console.log(event.detail);
        }
    }
</script>
</body>
</html>

二、滾動條事件  相容主流瀏覽器

onscroll  當滾動元素的滾動條時執行指令碼

繫結事件語法:

1.HTML中: <element onscroll="myScript">

2.JavaScript中:

直接繫結:object.onscroll=function(){myScript};

事件監聽:object.addEventListener("scroll", myScript); 

注意: Internet Explorer 8 及更早 IE 版本不支援 addEventListener()

 方法。

3.jQuery中: $(document).scroll(function(){});