为了账号安全,请及时绑定邮箱和手机立即绑定

同步(非被动)滚动事件

同步(非被动)滚动事件

宝慕林4294392 2023-02-17 17:39:57
浏览器使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,而且它不解决通过滚动条滚动的问题。
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超22个赞

我不相信这是可能的,你将不得不进入造假的境界。这里有一篇有趣的文章,讲述了它是如何(或曾经是?)在代码镜像中完成的

基本思想是使滚动条在正确高度的某些元素上呈现,并响应滚动条上的事件以更新用户实际看到的内容。


查看完整回答
反对 回复 2023-02-17
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号