1

我正在尝试使用Webkit GTK API 编写 C++ 程序。该程序只是加载一个页面,然后对其进行处理,然后再加载另一个页面,依此类推。

有时页面加载时间太长,所以我有一个超时回调,它会在一定时间后调用。回调只是调用webkit_web_view_stop_loading(),然后加载下一页。

问题是在取消页面加载后,我找不到任何方法来重置WebkitWebView对象的状态。所以有时发生的情况是,我会调用webkit_web_view_load_uri()来加载页面 A。但是加载页面 A 需要的时间太长,所以会调用超时,并调用webkit_web_view_stop_loading()。然后我开始加载页面 B,但是页面 A 剩余的各种资源(如 CSS 文件、JPEG、Iframe 等)仍然会导致调用回调,即使我的意图是完全停止页面 A 的所有加载。

我正在寻找类似 webkit_web_view_reset() 函数(不存在)的东西,它将重置WebkitWebView对象的状态,因此我可以从头开始加载新页面。

有没有办法做到这一点?

4

2 回答 2

0

以下是您可以考虑的一些选项:

  • 您可以创建一个新的 Web 视图。
  • 您可以使用webkit_web_view_load_html_string().
  • 或者您也可以使用webkit_web_view_go_back_or_forward()或返回webkit_web_view_go_back_or_forward()
于 2013-02-13T13:42:49.250 回答
0

您可能想要做的是终止与该会话关联的所有预先存在的会话(也称为连接)。这样做的方法是使用 WebKit 全局函数 ( http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-Global-functions.html ) webkit_get_default_session()。这将返回一个SoupSession实例,您可以在其中调用soup_session_abort()https://developer.gnome.org/libsoup/stable/SoupSession.html#soup-session-abort)或soup_session_cancel_message()https://developer.gnome.org/libsoup/stable /SoupSession.html#soup-session-cancel-message)函数来杀死/取消所有挂起和空闲的请求。

于 2013-04-01T15:44:55.863 回答