比方说,我想在GTK中使用WebKitWebView
来显示一些静态HTML页面。这些页面使用自定义URL方案,我们称之为custom://
。这个方案代表了一个本地文件,在生成HTML时,它的位置并不是事先知道的。我要做的就是连接到网页视图的navigation-requested
信号,而做到这一点:如何处理Webkit GTK中的自定义URL方案?
const gchar *uri = webkit_network_request_get_uri(request);
gchar *scheme = g_uri_parse_scheme(uri);
if(strcmp(scheme, "custom") == 0) {
/* DO FILE LOCATING MAGIC HERE */
webkit_web_view_open(webview, real_location_of_file);
return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
}
/* etc. */
这似乎做工精细,除该计划是在<img>
标签中使用,例如:<img src="custom://myfile.png">
,显然这些不请通过navigation-requested
信号。
在我看来,应该有一些方法来为Webkit注册自定义URL方案的处理程序。这可能吗?
谢谢,这是我需要正确的方向指针。为了完整起见,答案是连接到webview的'resource-request-starting'信号,并使用该处理程序中的'webkit_web_resource_get_uri()'进行操作。 (请注意,这仅适用于webkit> = 1.1.14。) – ptomato 2010-07-18 13:48:50