JS监听鼠标滚轮事件(兼容IE8)

一.用法:

  1. 调用addScrollListener(),传入要监听的对象
  2. 在scrollHandle() 中编写相应处理函数

注:除了window、document 外,其他对象都阻止了默认滚动行为。

二.代码:

// 为某个对象添加滚动监听事件(传入要监听的对象)
function addScrollListener(obj) {
  if (obj.addEventListener) {
    // Firefox
    obj.addEventListener('DOMMouseScroll', wheel, false)
  }
  // IE/Chrome/Opera
  // window.onmousewheel = document.onmousewheel = wheel
  obj.onmousewheel = wheel
}

// 统一处理滚轮滚动事件
function wheel(event) {
  event = event || window.event // 解决IE8兼容性问题
  var flag = 0
  if (event.wheelDelta) {
    // IE、Chrome、Opera浏览器使用的是wheelDelta(向下为-120或-150,向上为120或150)
    flag = event.wheelDelta
  } else if (event.detail) {
    // Firefox使用的是detail(向下为3,向上为-3,因此取反与其他浏览器保持一致)
    flag = - event.detail
  }
  
  // 调用对应处理函数
  if (flag) scrollHandle(flag)
  // 阻止浏览器的默认滚动行为; 若监听的是window/document,则不阻止
  if(event.target !== document.body){
    event.preventDefault && event.preventDefault()
    return false  // 兼容IE8
  }
}

// 分别编写向上、向下滚动时对应的处理函数
function scrollHandle(flag) {
  if (flag < 0) {
    // 向下滚动
  } else {
    // 向上滚动
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值