我在网页中像这样操纵transform属性,以实现滚动效果:
element.style.webkitTransform = "translate(0px, -"+scrollY+"px)";
snapShotPage();
我知道,在大多数浏览器(包括来自我的经验的Webkit)等待,直到脚本执行结束做任何视觉上的变化,但是在我的情况,我需要
snapShotPage()
重绘/重绘后运行已经出现,为了得到一个准确的快照。有什么办法吗?我注意到,使用
scrollTop
导致出现此问题,但它不是我的情况选择。是否有使用setTimeout
避免了溶液? 最佳答案
它总是喜欢 - >代码 - >布局 - >油漆
如果您的某些代码基于绘制结果,则必须对其进行转换。浏览器的油漆工作是不是同步工作流程的一部分,所以你需要为事件队列第二个代码块。
解决方案1:
window.setTimeout(snapShotPage, 0);
解决方案2:
使用requestAnimationFrame并调用函数snapShotPage在下一帧。
解决方案3:
对DOM事件做出反应并通过MutationObserver调用snapShotPage change事件
关于javascript - 在Webkit的同步重绘/等待DOM更新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17181875/