Diciamo che voglio usare uno WebKitWebView
in GTK per visualizzare alcune pagine HTML statiche. Queste pagine utilizzano uno schema URL personalizzato, chiamiamolo custom://
. Questo schema rappresenta un file locale la cui posizione non è nota in anticipo, al momento della generazione dell'HTML. Quello che faccio è connettono al navigation-requested
del segnale della WebView, e fanno questo:Come gestire uno schema URL personalizzato in Webkit GTK?
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. */
Questo sembra funzionare bene, a meno che il sistema viene utilizzato in un tag <img>
, ad esempio: <img src="custom://myfile.png">
, a quanto pare questi non lo fanno passare attraverso il segnale navigation-requested
.
Mi sembra che ci debba essere un modo per registrare un gestore per lo schema URL personalizzato con Webkit. È possibile?
Grazie, questo è stato il puntatore nella direzione giusta che mi serviva. Per completezza, la risposta è quella di connettersi al segnale 'resource-request-starting' della webview, e fare la manipolazione con' webkit_web_resource_get_uri() 'da quel gestore. (Nota che funziona solo su webkit> = 1.1.14.) – ptomato