gpt4 book ai didi

ajax - 使用QtWebKit时如何知道网页何时加载?

转载 作者:行者123 更新时间:2023-12-03 22:29:28 24 4
gpt4 key购买 nike

两者 QWebFrameQWebPagevoid loadFinished(bool ok)可用于检测网页何时完全加载的信号。问题是当网页有一些异步加载的内容 (ajax) 时。在这种情况下如何知道页面何时完全加载?

最佳答案

我实际上并没有这样做,但我认为您可以使用 QNetworkAccessManager 来实现您的解决方案。 .

您可以使用 networkAccessManager() 从 QWebPage 获取 QNetworkAccessManager功能。 QNetworkAccessManager 有信号 finished ( QNetworkReply * reply )每当 QWebPage 实例请求文件时就会触发它。
finished信号为您提供一个 QNetworkReply 实例,您可以从中获取原始请求的副本,以便识别请求。

因此,创建一个插槽以连接到 finished信号,使用传入的 QNetworkReply 的方法来确定哪个文件刚刚完成下载,如果它是您的 Ajax 请求,请执行您需要做的任何处理。

我唯一需要注意的是,我以前从未这样做过,所以我不能 100% 确定它会起作用。

另一种选择可能是使用 QWebFrame 的方法将对象插入到页面的对象模型中,并插入一些 JavaScript,然后在 Ajax 请求完成时通知您的对象。这是一种稍微有点hackier的方法,但绝对应该有效。

编辑:

第二种选择对我来说似乎更好。工作流程如下:

将插槽附加到 QWebFrame::javascriptWindowObjectCleared() 信号。此时调用QWebFrame::evaluateJavascript()添加类似如下代码:
window.onload = function() {//页面已完全加载 }

将您需要的任何代码放入该函数中。您可能希望通过 QWebFrame::addToJavaScriptWindowObject() 将 QObject 添加到页面,然后在该对象上调用函数。此代码仅在页面完全加载时才会执行。

希望这能回答问题!

关于ajax - 使用QtWebKit时如何知道网页何时加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com