加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:05:45 所属栏目:百科 来源:网络整理
导读:QWebFrame和QWebPage都有void loadFinished(bool ok)信号,可以用来检测网页何时被完全加载.问题是当网页有异步加载某些内容(ajax)时.在这种情况下如何知道页面是否完全加载? 我实际上没有这样做,但我认为您可能可以使用QNetworkAccessManager实现您的解决方
QWebFrame和QWebPage都有void loadFinished(bool ok)信号,可以用来检测网页何时被完全加载.问题是当网页有异步加载某些内容(ajax)时.在这种情况下如何知道页面是否完全加载?
我实际上没有这样做,但我认为您可能可以使用QNetworkAccessManager实现您的解决方案.

您可以使用networkAccessManager()功能从QWebPage获取QNetworkAccessManager. QNetworkAccessManager有一个信号finished ( QNetworkReply * reply ),每当QWebPage实例请求一个文件时,它将被触发.

完成的信号为您提供了一个QNetworkReply实例,您可以从中获取原始请求的副本,以便识别请求.

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

我唯一的注意事项是我以前从来没有这样做,所以我不能100%肯定它会奏效.

另一种替代方法可能是使用QWebFrame的方法将对象插入页面的对象模型,并插入一些JavaScript,然后在Ajax请求完成时通知您的对象.这是一个稍微黑客的方式,但一定要奏效.

编辑:

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

将一个插槽附加到QWebFrame :: javascriptWindowObjectCleared()信号.在这一点上,调用QWebFrame :: evaluateJavascript()来添加类似于以下内容的代码:
window.onload = function(){// page has full loaded}

把你需要的代码放在该函数中.您可能需要通过QWebFrame :: addToJavaScriptWindowObject()向页面添加一个QObject,然后调用该对象的函数.此代码仅在页面完全加载时执行.

希望这回答了这个问题!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读