如何在Webkit GTK中处理自定义URL方案?

pto*_*ato 10 gtk webkit url-scheme

假设我想WebKitWebView在GTK中使用一个静态HTML页面.这些页面使用自定义URL方案,让我们调用它custom://.此方案表示在生成HTML时其位置未知的本地文件.我所做的是连接到navigation-requestedwebview 的信号,并执行以下操作:

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. */
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,除非该方案用于<img>标签,例如:<img src="custom://myfile.png">,显然这些不通过navigation-requested信号.

在我看来应该有一些方法来为Webkit注册自定义URL方案的处理程序.这可能吗?

Eme*_*gul 5

我对WebKit的Chromium端口比较熟悉,但我相信您可能需要使用webkit_web_resource_get_uri(请参阅webkitwebresource.h)来处理图像等资源.

  • 谢谢,这是我需要的正确方向的指针.为了完整起见,答案是连接到webview的`resource-request-starting`信号,并从该处理程序中使用`webkit_web_resource_get_uri()`进行操作.(请注意,这仅适用于webkit> = 1.1.14.) (3认同)