由於鼠標滾輪事件在 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 實現滾動條的功能