比方說,我想在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