当前位置: 首页 > 面试题库 >

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

施晗日
2023-03-14
问题内容

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


问题答案:

我实际上尚未做到这一点,但我认为您 可以 使用来实现您的解决方案QNetworkAccessManager

您可以使用networkAccessManager
()函数从QWebPage获取QNetworkAccessManager
。QNetworkAccessManager的信号完成(QNetworkReply * Reply),该信号在QWebPage实例请求文件时触发。

finished信号为您提供了QNetworkReply实例,从中可以获取原始请求的副本,以便识别该请求。

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

我唯一需要说明的是,我以前从未做过此事,因此我不确定100%会奏效。

另一种选择是使用QWebFrame的方法将对象插入页面的对象模型中,并插入一些JavaScript,当Ajax请求完成时,JavaScript将通知您的对象。这是一种稍微有点骇人听闻的方法,但是绝对可以。

编辑:

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

在QWebFrame :: javascriptWindowObjectCleared()信号上附加一个插槽。此时,调用QWebFrame ::
evaluateJavascript()以添加类似于以下内容的代码:window.onload = function(){//页面已完全加载}

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

希望这能回答问题!



 类似资料:
  • 问题内容: 我正在使用@ font-face,但我讨厌Firefox显示默认字体,等待加载@ font-face字体,然后替换它。因此,整个页面都会以新字体闪烁。 Webkit浏览器只是在加载字体后才显示文本,而且外观更加简洁。 因此,我想知道jQuery是否可以帮助我知道何时加载页面上的所有数据(包括@ font- face文件),以便随后显示文本?是否有一个jQuery方法告诉我何时加载了所有

  • 问题内容: 我有一个页面,一个页面包含一个AJAX组件,当用户单击一个按钮时,其内容会更改。我如何知道内容何时加载到? 问题答案: 您需要做两件事: 在您的JavaScript代码中,发出带有自定义URL的AJAX请求已完成的信号: 在您的本机代码中,您需要实现一个侦听此自定义URL 的委托: 不能保证此代码可以解析/编译,但应为您提供实现方法的思路。

  • 问题内容: 现在,我使用一个静态布尔值来告诉初始化何时发生。有没有更简单的方法知道我已经调用了initialize? 谢谢!!! 解决了!!!!非常感谢您的评论。您需要在扩展应用程序的类中初始化解析,然后将其作为应用程序(而不是其他活动)添加到清单文件中。 :) 这是我使用Parse的课程: 这是我的android清单文件 问题答案: 创建一个应用程序类,然后在onCreate中初始化解析。 在此

  • 在角度分量的顶部有以下初始化。 在我的组件中的某个地方,我使用选择器对Ngrx存储进行以下调用,以获取可观测数据。所有这些都很好,我得到了我想要的数据。 我需要知道这个可观察的什么时候完成。我需要设置一个布尔值,当所有可观察到的数据都试图完成时,它将关闭加载指示器。这是通过Web服务完成的。 因为可观测的源来自其他地方,所以我无法挂起“完整”回调

  • 问题内容: 我有一个jQuery ajax函数,将一些内容加载到div中,其中一些内容是图像。我想说的是,直到刚刚加载到我的ajax中的那些图像完成加载,然后运行一个功能,例如显示内容。这样,我就不会将内容加载到div中并且图像会开始加载。我希望它们被加载,然后将内容或内容放入div中。 我已经看到了许多解决方案,例如using ,但是它似乎不适用于使用ajax加载的内容。 问题答案: 您需要在A

  • 问题内容: 我对Docker的层缓存表现出色感到惊讶,但我也想知道它如何确定是否可以使用缓存的层。 让我们以这些构建步骤为例: 例如,它如何知道可以使用缓存的层,但可以为其创建新层呢? 问题答案: 在Dockerfile最佳实践构建缓存部分中相当详尽地解释了构建缓存过程。 * 从缓存中已存在的基本映像开始,将下一条指令与从该基本映像派生的所有子映像进行比较,以查看是否其中一个是使用完全相同的指令构