1

我正在使用 cdp ( https://github.com/mafredri/cdp ) 以使用 devtools 协议生成页面的 pdf。但首先我需要知道页面何时完全加载。我发现 networkIdle 事件可以帮助我知道何时发生这种情况。但是,我遇到了麻烦,因为 networkIdle 事件有时会触发两次。然后我需要知道这个什么时候被解雇

4

2 回答 2

0

您要查找的内容有两个部分。

首先,事件被触发两次的原因。创建新选项卡(目标)时,它加载的第一页是about:blank。您也会获得此页面的生命周期事件。第二次触发 load 事件是您正在寻找的事件(如果您使用的是Page.lifecycleEvent)。

现在,要处理第二个问题 - 您还可以使用其他事件。页面加载的基本方法是Page.loadEventFired,据我所知,它只会为实际页面触发(但我可能错了)。

重要提示:如果您使用生命周期事件,它们会分别为每个帧触发,这意味着主帧可能会在加载子帧之前完成加载。Page.loadEventFired具有不同的行为并等待所有帧触发其加载事件。

于 2022-02-22T12:48:24.300 回答
-1

这是一篇关于页面生命周期 api的好文章。

另一种可能的解决方案可能是:

document.onreadystatechange = function () {
  if (document.readyState === 'complete') {
    run the screenshot code...
  }
}
于 2020-10-14T19:17:14.357 回答