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