0

我正在尝试将使用 Chromium 引擎的网络浏览器移植到 webkit2gtk。

在表单中嵌入webview非常容易,但现在我想添加(端口)代码来阻止内容。我连接到以下信号:

  g_signal_connect(webview, 'load-changed', G_CALLBACK(@webview_load_change_cb), self);
  g_signal_connect(webview, 'notify::title', G_CALLBACK(@webview_favicon_changed_cb), self);
  g_signal_connect(webview, 'resource-load-started', G_CALLBACK(@webview_resourload), self);

并且它们都可以工作,但是我找不到阻止或取消加载(即过滤)给定资源的方法。我希望如果需要,可以驱动“资源加载启动”信号来取消请求,但事实并非如此。仔细阅读文档,我看不出我需要什么。

我知道 webkit 有一个机制(记录在这里),但我觉得它太“内部”了:所有发生的事情都是隐藏的,没有统计数据。例如,我想知道规则何时被击中。

那么,除了上面的方法之外,还有什么方法可以知道正在加载哪些 URL 并在需要时取消它们?

--- 更新 --- 我想我找到了一些完美的东西。本文档描述了“发送请求”信号,该信号“......可用于修改请求......也可以取消资源加载操作”

问题再次是,使用它似乎令人费解且不舒服,因为信号属于 WebKitWebPage 对象,该对象只能通过 WebKitWebExtension 获得,而 WebKitWebExtension 又只能通过告诉 webkit 加载外部扩展来创建,所以它使应用程序和扩展程序相互交谈会有问题。如果只有一个功能可以直接从 WebkitWebView 获取 WebkitWebPage ......但我没有看到它。

4

0 回答 0