我按如下方式运行铬,使其输出生成的汇编代码并加载指定的.html:
./ chrome --js-flags =“ - print-code”〜/ example.html
是否有方法(命令行参数?)来推断页面是否已完成加载,即是否已输出所有汇编代码?理想情况下,通过stdout传递此信息。
谢谢!
答案 0 :(得分:0)
简而言之:不。
一个原因是“页面已完成加载”的陈述是如此模糊,以至于根本不是一个定义。许多现代网站分阶段加载:首先下载并显示一些服务器呈现的静态HTML,然后异步加载动态内容,通常再次以几个步骤加载(例如,首先是主要内容,空闲时是广告)。如果有几个<iframe>
s怎么办?如果页面上的计时器在X秒后加载了更多内容(例如,图片幻灯片,通知,新广告),该怎么办?如果用户交互(点击,滚动等)触发更多负载,该怎么办?在所有这些情况下,浏览器无法知道“此页面已完成”,并且许多页面永远不会“完成”。
另一个问题是“页面已完成加载”和“所有汇编代码已生成”的语句是非常不同的事情。实际上,V8通常会尝试在初始加载仍在进行时不编译任何优化代码,因为这会造成速度减慢并且没有提供太多好处。相反,优化的代码将在稍后编译,用于观察到大量运行的JavaScript函数。由于优化取决于JavaScript代码的作用,因此通常无法预测代码生成是否已完成。我见过无限卷轴网站,每个滚动事件都会导致优化编译更多代码。
也就是说,对于特定情况,您可以获得一些近似值:如果您可以控制example.html
,则可以在选择时发出console.log("MY_MARKER")
。如果您随后使用--enable-logging=stderr
运行Chrome,则可以在console.log()
上找到stderr
语句(以及其他一些内容)。