浏览器使scroll
事件异步(即{passive: true}
)一段时间了。对于我的用例,同步提供了更好的用户体验。
有什么方法可以重新获得同步滚动事件,这样我就可以在(scrollLeft, scrollTop, clientWidth, clientHeight)
矩形发生变化但在滚动呈现之前进行 DOM 操作?
作为一种奇怪的解决方法,在 Firefox 中打开和关闭 Dev Tools 会使事件同步,这就是我注意到同步提供了更好的用户体验的方式。同时设置apz.disable_for_scroll_linked_effects
为 true 使事件同步。同样在 Safari(桌面)中,它们似乎总是同步的。
我尝试过的事情:
div.addEventListener('scroll', update, {passive: false})
但passive: false
被忽略了。
Object.defineProperty(Object.getPrototypeOf(div), 'scrollTop', {get: ..., set: ...})
但是没有调用二传手。
div.addEventListener('wheel', update, {passive: false})
但我不确定是否可以映射 from deltaY
-> updated scrollTop
,而且它不解决通过滚动条滚动的问题。
茅侃侃
相关分类