如何解决如何在 WebKit2Gtk 中实现内容阻塞
我正在尝试将使用 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),'resource-load-started',G_CALLBACK(@webview_resourload),self);
它们都可以工作,但我找不到阻止或取消加载(即过滤)给定资源的方法。如果需要,我希望可以驱动“资源加载启动”信号来取消请求,但事实并非如此。仔细阅读文档,我不认为我需要。
我知道 webkit 有一个机制 (documented here),但我觉得它太“内部”了:发生的一切都是隐藏的,没有统计数据。例如,我想知道何时命中规则。
那么,除了上述方法之外,还有什么方法可以知道正在加载哪些 URL 并在需要时取消它们?
--- 更新--- 我想我已经找到了一些完美的东西。此 documentation 描述了“发送请求”信号,“...可用于修改请求...还可以取消资源加载操作”。
问题再次在于使用它似乎令人费解和不舒服,因为信号属于 WebKitWebPage 对象,该对象只能通过 WebKitWebExtension 获得,而后者只能通过告诉 webkit 加载外部扩展来创建,因此使应用程序和扩展程序相互交谈会出现问题。如果有直接从 WebkitWebView 获取 WebkitWebPage 的功能就好了……但我没有看到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。