1. onmousewheel 火狐不支持此事件
-->鼠标滚动时触发
在火狐中需要使用DOMMouseScroll来绑定滚动事件,该事件需通过addEventListeber()函数来绑定
2. 事件对象.wheelDelta 火狐不支持
-->可以获取鼠标滚轮滚动的方向,向上滚是正值,向下滚是负值
在火狐中用detail(往下滚是正值,往上滚是负值)
<style>
#box {
height: 100px;
width: 100px;
background-color: pink;
}
</style>
<div id="box"></div>
<script>
let box = document.getElementById('box');
box.onmousewheel = function (event) {
event = event || window.event;
// wheelDelta可以获取鼠标滚动的方向,正值表示向上滚,负值表示向下滚
// detail是给火狐准备的
if (event.wheelDelta > 0 || event.detail < 0) {
box.style.height = box.clientHeight - 100 + 'px';
} else {
box.style.height = box.clientHeight + 100 + 'px';
}
// 取消浏览器的默认滚动行为
/* 使用addEventListener()方法绑定响应函数,取消默认行为时不能使用
return ,需要使用事件对象来取消默认行为,但是IE不支持,所以需要判断
*/
event.preventDefault || event.preventDefault()
return false
}
// 火狐不支持上面的事件,需用DOMMouseScroll并结合addEventListener使用
bind(box, 'DOMMouseScroll', box.onmousewheel)
function bind(obj, eventStr, callback) {
if (obj.addEventListener) {
// IE9及以上还有其它浏览器
obj.addEventListener(eventStr, callback, false)
} else {
// this是谁由调用方式决定
// callback.call(obj)
// IE8及以下
obj.attachEvent('on' + eventStr, function () {
callback.call(obj)
})
}
}
</script>