瀏覽器使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,而且它不解決通過滾動條滾動的問題。
同步(非被動)滾動事件
寶慕林4294392
2023-02-17 17:39:57