javascript: 鼠標滾輪事件

 由於鼠標滾輪事件在 IE 和 FF 的實現有點不一樣,所以有需要把這個寫成一個統一可用的事件。
今天在網上找來了響應滾輪的函數並改寫成下面的類:
複製內容到剪貼板代碼:

 

 function wheelEvent(obj, handle){
        this.handle = handle;
       
        // different events between Firefox and IE
        window.addEventListener ? obj.addEventListener("DOMMouseScroll", this.wheel, false) : (obj.onmousewheel = this.wheel);
}

wheelEvent.prototype.wheel = function (event){
        var ev = event || window.event;
        var delta = ev.wheelDelta ? (ev.wheelDelta / 120) : (- ev.detail / 3);

        // Firefox using `wheelDelta` IE using `detail`
        eval ('delta ? ' + parent.handle + '(delta) : null;');
}

 

在使用的時候需要定義一個執行函數,用以根據從上述類中獲得的值進行操作,併爲指定的網頁元素添加事件。比如複製內容到剪貼板代碼:

 

 function handle(delta){
   document.getElementById('text').scrollTop -= delta * 20;
}
   new wheelEvent(document.getElementById('text'), 'handle');


在上例中第一個參數是添加滾輪事件的網頁元素, id 爲 text 的 div;第二個參數是執行函數的名字 handle。
其中 handle 函數必須有且只有一個參數delta,滾輪往上滾時 delta 大於 0,往下則小於 0。上例 handle 函數的作用是用滾輪對 div 實現滾動條的功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章