回流/重绘检测:现在可能吗?将来可能吗?

6
我想知道现代 Web 浏览器中是否有一种可靠的方法来检测文档重排和/或重绘,或者是否有任何迫切需求需要将其放入 W3 规范中。
如果没有标准或跨浏览器方式可行,我也想知道如何使用供应商特定的技巧来实现它(例如,Mozilla 显然有一个 MozAfterRepaint 事件)。
谢谢。

1
没有真正的理由去捕获那个事件,因为帧率会变化,所以它是不可预测的。使用 requestAnimationFrame 来更接近重绘周期。 - Populus
可能是 https://dev59.com/DGw05IYBdhLWcg3w0VKa 的重复问题。 - Patrick
1个回答

0

你无法精确测量,但可以通过查看任何JavaScript中的getter或setter/更改样式、动画、添加/删除元素类来进行预测。这可以通过使用JavaScript对页面上的所有JavaScript进行ajax以获取JavaScript字符串,然后使用正则表达式检测它们的位置来完成。创建一个包含所有执行此操作的方法名称的对象。

如果您想实时捕获它,可以结合上述方法,并将页面上的所有方法柯里化以调用自己的中介者,将其与上面的对象引用配对。


1
静态代码分析来检测重绘和/或回流?谁会走到那一步呢?此外,这只会产生可能导致重绘和/或回流的代码点,但你仍然必须以某种方式预测何时到达这些代码点。换句话说,你必须修改代码以添加事件触发器。而且,JavaScript并不是唯一可能导致重绘/回流的东西。很抱歉,但这是一个疯狂的建议。 - Gui Prá
1
我会这么说,因为我相信更好的调试、更好的性能和摆脱糟糕框架。一旦你知道什么导致回流,那工作就完成了。Javascript可以检测页面上的CSS - 也可以计算。你完全可以访问DOM。这是可能的,但我并没有说这会很容易。这取决于开发者的经验。 - Steve Tomlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接