收集 scroll 事件

scroll 事件是不支持冒泡的,那么怎么收集呢?当然是在捕获阶段进行收集了。

document.addEventListener('scroll', (e) => {
  const target = e.target
  const isTop = Object.getPrototypeOf(target).constructor.name === 'HTMLDocument'
  const scrollLeft = isTop ? window.scrollX : target.scrollLeft
  const scrollTop = isTop ? window.scrollY : target.scrollTop
  console.log({ target, scrollLeft, scrollTop })
}, true)

这样就可以通过兼容方式收集到滚动事件的信息了。