我正在尝试使用 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对象的状态,因此我可以从头开始加载新页面。
有没有这样做?
答案 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.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)函数来终止/取消所有待处理和空闲请求