我仅在 Vivaldi 浏览器中遇到了一个奇怪的错误。
我正在使用 setinterval() (每 100 毫秒)来显示滚动元素,但是当我开始在 MacBook Pro 上滚动时... setinterval 停止触发并且在滚动停止之前不会恢复。
结果是在 setinterval 上淡入的元素直到用户真正停止滚动才会淡入。更奇怪的是,这种行为在页面上大约 10 秒后停止。
很好奇这是否是任何已知问题或是否有修复?
我仅在 Vivaldi 浏览器中遇到了一个奇怪的错误。
我正在使用 setinterval() (每 100 毫秒)来显示滚动元素,但是当我开始在 MacBook Pro 上滚动时... setinterval 停止触发并且在滚动停止之前不会恢复。
结果是在 setinterval 上淡入的元素直到用户真正停止滚动才会淡入。更奇怪的是,这种行为在页面上大约 10 秒后停止。
很好奇这是否是任何已知问题或是否有修复?
这是一个巨大的简化,但您很可能会观察到以下行为1。
当您调用时,setTimeout / setInterval
您将函数放入事件队列中,以最早在 X ms之后执行。
但是,浏览器可能有更重要的工作要在堆栈顶部进行处理,例如绘制 UI。在这种情况下,在setInterval
处理了更高优先级的工作之前,不会处理回调。
如何缓解问题?尝试使用requestAnimationFrame来代替工作。
1欢迎对本帖进行更正。