【问题标题】:Running chrome from the command line and infering when a page finished loading从命令行运行 chrome 并推断页面何时完成加载
【发布时间】:2018-05-03 21:25:09
【问题描述】:

我正在运行 chromium,使其输出生成的汇编代码并加载指定的 .html:

./chrome --js-flags="--print-code" ~/example.html

有没有办法(命令行参数?)来推断页面是否已完成加载,即所有汇编代码都已输出?理想情况下,通过标准输出传递这些信息。

谢谢!

【问题讨论】:

    标签: google-chrome chromium v8


    【解决方案1】:

    简而言之:没有。

    其中一个原因是“页面已完成加载”的说法过于含糊,实际上根本就不是一个定义。许多现代网站分阶段加载:首先下载并显示一些服务器渲染的静态 HTML,然后异步加载动态内容,通常分几个步骤再次加载(例如,首先是主要内容,空闲时广告)。如果有多个<iframe>s 怎么办?如果页面上有一个计时器可以在 X 秒后加载更多内容(例如图片幻灯片、通知、新广告)怎么办?如果用户交互(点击、滚动等)触发更多负载怎么办?在所有这些情况下,浏览器无法知道“此页面已完成”,并且许多页面从未“完成”。

    另一个问题是“页面已完成加载”和“所有汇编代码已生成”这两个语句是完全不同的东西。事实上,V8 通常会在初始加载仍在进行时尝试不编译任何优化的代码,因为这会导致速度变慢和卡顿,而不会带来太多好处。取而代之的是,优化的代码会在以后编译,以用于观察到大量运行的 JavaScript 函数。由于优化取决于 JavaScript 代码在做什么,因此通常无法预测代码生成是否完成。我见过无限滚动的网站,每个滚动事件都会导致优化编译更多代码。

    也就是说,对于特定场景,您可以获得一些近似值:如果您可以控制 example.html,则可以在您选择的时间发出 console.log("MY_MARKER")。如果您随后使用 --enable-logging=stderr 运行 Chrome,您可以在 stderr 上找到 console.log() 语句(以及一堆其他内容)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多