Webkit GTK:停止加载和重置Web视图

时间:2012-08-25 21:13:28

标签: c++ webkit gtk

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

有时页面加载时间太长,所以我会在一段时间后调用timeout callback。回调只需调用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对象的状态,因此我可以从头开始加载新页面。

有没有这样做?

2 个答案:

答案 0 :(得分:0)

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

  • 您可以创建新的网络视图。
  • 您可以使用webkit_web_view_load_html_string()加载自己的html。
  • 或者您也可以使用webkit_web_view_go_back_or_forward()webkit_web_view_go_back_or_forward()
  • 返回

答案 1 :(得分:0)

您可能想要做的是终止与该会话关联的所有预先存在的会话(也称为连接)。这样做的方法是使用WebKit全局函数(http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-Global-functions.htmlwebkit_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)函数来终止/取消所有待处理和空闲请求