1. 程式人生 > >滑鼠滾輪事件

滑鼠滾輪事件

做前端的最難的就是要做的每種瀏覽器都相容,往往我們只能做到其中一種是相容,而且就一種瀏覽器而言也是有不同的版本,也並非是每個版本都是能夠做到相容,今天就遇到了一個很鬧心的問題,同樣的一段程式碼,在ie上能夠完美執行,在谷歌上卻不好使了,下面帶大家看看滑鼠的滾輪事件。

原生的滾輪事件:火狐與其他瀏覽器使用了不同的事件

/* 
 * 滾輪事件只有firefox比較特殊,使用DOMMouseScroll; 其他瀏覽器使用mousewheel;
 * 
*/
// firefox
document.body.addEventListener("DOMMouseScroll", function(event) {


    var direction= event.detail && (event.detail > 0 ? "mousedown" : "mouseup");
    console.log(direction);    
});


// chrome and ie
document.body.onmousewheel = function (event) {
    event = event || window.event;


    var direction = event.wheelDelta && (event.wheelDelta > 0 ? "mouseup" : "mousedown");
    console.log(direction);
};

使用jquery相容後的事件

// jquery 相容的滾輪事件
$(document).on("mousewheel DOMMouseScroll", function (e) {
    
    var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) ||  // chrome & ie
                (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));              // firefox


    
    if (delta > 0) {
        // 向上滾
        console.log("wheelup");
    } else if (delta < 0) {
        // 向下滾
        console.log("wheeldown");
    }
});