Tại thời điểm này, Firefox xác định các sự kiện DOMMouseScroll và bánh xe. Chrome, Opera và IE (mới nhất, một lần nữa!) xác định con lăn chuột.
Đây là cách tôi đã làm nó:
if(window.onwheel !== undefined) {
window.addEventListener('wheel', onMouseWheel)
} else if(window.onmousewheel !== undefined) {
window.addEventListener('mousewheel', onMouseWheel)
} else {
// unsupported browser
}
Lưu ý rằng sự ủng hộ addEventListener trong các phiên bản IE cũ cần một polyfill. Ngoài ra, bạn có thể sử dụng window.mousewheel = function() {} hoặc phương thức bất kỳ.
Như bạn có thể thấy, trình xử lý sự kiện được gắn vào đối tượng cửa sổ. Bạn không thể đính kèm nó vào các phần tử theo kiểu trình duyệt chéo. Bạn có thể sử dụng thuộc tính đích đối tượng sự kiện để xem nơi nó được kích hoạt, và làm một bộ lọc trên cơ sở đó.
PS: Xem thêm nhiều trình duyệt: Trong IE, bạn phải sử dụng thuộc tính "wheelDelta" (và đảo ngược dấu!) Bên trong đối tượng sự kiện khi xử lý nó trong hàm gọi lại ("onMouseWheel"). Các trình duyệt khác sẽ điền "deltaY" (hoặc "deltaX" để cuộn ngang).
Nó hoạt động trong Firefox và Chrome. ** Live demo: ** http://jsfiddle.net/chtNP/1/ –
Điều này sẽ không hoạt động tốt trong IE hoặc Opera, tùy thuộc vào phiên bản (xem http://www.adomas.org/javascript- mouse-wheel /) – Kelvin
@KelvinMackay Tôi đã thử nghiệm trong IE9, và IE8, và nó hoạt động. –