9

我很难理解不同版本的 WebKit、WebKitGTK、GTK 是什么。这是我到目前为止所拥有的:

  • WebKit 是一个包含 WebKit1 和 WebKit2 的库。用这个 include 调用哪一个#include <webkit/webkit.h>

  • WebKitGTK 1.10.2 是最后一个依赖 GTK2 的版本。它是否仍在维护/开发?

  • 它是否总是需要 GTK、Qt 或其他工具包支持?还是可以单独使用?

4

3 回答 3

7

您必须区分版本号和 api 级别。

  • 版本号类似于1.10.22.2.1- 仅此而已,只是版本号 - 它与 GTK 版本或 api 级别无关。
  • 有两种不同的 api:webkit ( webkit/webkit.h) 和 webkit2 ( webkit2/webkit2.h)。主要区别在于 webkit2 使用多进程架构进行渲染、javascript 和插件,而不是 webkit 的单进程架构。

WebKitGTK+ 可以针对 GTK+2 或 GTK+3 进行编译。这将导致库文件名分别像libwebkitgtk-1.0.solibwebkitgtk-3.0.so。(这与 WebKit 本身的版本无关。)但是,webkit2 api 依赖于 GTK+3,库文件名类似于libwebkit2gtk-3.0.so.

WebKitGTK+ 和其他端口实现了类似的东西:

  • 绘制 ui 元素(复选框、选择框、...)
  • 对话框(文件选择、下载、http auth)
  • 网络通信(处理 dns 和 http)
  • ...

如果你想避免任何可用的 webkit 端口,你需要自己实现这一切。

PS:WebKitGTK+ 2.xx 仍然支持 GTK+2

于 2013-10-30T23:41:51.823 回答
1

WebKitGTK 是一个“端口”,是的,您实际上确实需要从几个端口中选择一个,单独使用 webkit 基本上意味着编写自己的端口,这是一项艰巨的工作。在 linux 上,我建议使用 WebKitGTK 或 QtWebKit。

WebKit 和 WebKit2 是两个完全不同的 Web 引擎 API,它们碰巧存在于同一个源代码树中(整体上也称为 WebKit)并使用相同的核心组件。最大的不同是 WebKit2 将 Web 内容处理拆分为不同的过程——我相信它也是唯一一个正在进行认真开发的过程。您实际上不需要在这两者之间进行选择,因为端口通常已经做出了选择:您只需使用端口提供的 API。GTK+ 端口曾经在 Webkit 上,但现在应该使用 WebKit2(但 Webkit API 现在可能仍然存在)。

如果 1.10.2 真的是支持 GTK2 的最后一个版本(请注意,我不知道这是不是真的),那么我相当肯定它不会被进一步开发。

编辑:在 debian 上,库选项是:

  • libwebkitgtk-1.0 2.2.0:Webkit1、GTK+ 2
  • libwebkitgtk-3.0 2.2.0:Webkit1、GTK+ 3
  • libwebkit2gtk-3.0 2.2.0:Webkit2、GTK+ 3

所以看起来 GTK+ 2 至少在某种程度上仍然受到支持,但是(至少在 debian 上)你只能获得带有 GTK+ 3 的 WebKit2 API。该选项应该是最面向未来的。

于 2013-10-30T23:02:42.727 回答
1

WebKit 的唯一 Linux 端口是 WebKit2-GTK3。所有其他人都死了,没有收到安全更新,这使它们成为黑客的微不足道的目标。如果您的应用程序依赖于 Linux 上其他版本的 WebKit,请将其卸载。故事结局。

是的,WebKit2 API 没有那么强大。那是无关紧要的。如果您被困在 WebKit1 上,请放弃它,然后:

  • 在自己的进程中生成浏览器
  • 切换到 Chromium 嵌入式框架。
于 2018-09-06T15:19:09.687 回答