Pio*_*ost 14 ajax qt asynchronous qtwebkit qwebpage
二者QWebFrame并QWebPage具有void loadFinished(bool ok)可被用于检测当网页完全加载信号.问题是当网页异步加载某些内容时(ajax).在这种情况下如何知道页面何时完全加载?
Rob*_*ght 12
我实际上并没有这样做,但我认为你可以使用它来实现你的解决方案QNetworkAccessManager.
您可以使用networkAccessManager ()函数从QWebPage获取QNetworkAccessManager .QNetworkAccessManager有一个完成的信号(QNetworkReply*reply),只要QWebPage实例请求文件就会触发该信号.
该finished信号为您提供了一个QNetworkReply实例,您可以从中获取原始请求的副本,以便识别请求.
因此,创建一个连接到finished信号的插槽,使用传入的QNetworkReply方法确定哪个文件刚刚完成下载,如果是您的Ajax请求,请执行您需要执行的任何处理.
我唯一需要注意的是,我以前从未这样做过,所以我不能100%确定它会起作用.
另一种方法可能是使用QWebFrame的方法将对象插入到页面的对象模型中,并插入一些JavaScript,然后在Ajax请求完成时通知您的对象.这是一种稍微讨厌的方式,但绝对应该有效.
编辑:
第二种选择对我来说似乎更好.工作流程如下:
将一个槽附加到QWebFrame :: javascriptWindowObjectCleared()信号.此时,调用QWebFrame :: evaluateJavascript()来添加类似于以下内容的代码:window.onload = function(){//页面已满载}
在该函数中放置您需要的任何代码.您可能希望通过QWebFrame :: addToJavaScriptWindowObject()向页面添加QObject,然后调用该对象上的函数.此代码仅在页面完全加载时执行.
希望这回答了这个问题!
| 归档时间: |
|
| 查看次数: |
9553 次 |
| 最近记录: |