WebKitGTK +,GTK2,GTK3

Gra*_*ent 8 gtk webkit webkitgtk

我有点难以理解WebKit,WebKitGTK,GTK与不同版本的关系.这是我到目前为止:

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

  • WebKitGTK 1.10.2是依赖GTK2的最后一个版本.它仍然保持/发展?

  • 它总是需要得到GTK,Qt或其他工具包的支持吗?或者可以单独使用它吗?

Iva*_*ldi 7

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

  • 版本号是1.10.2或者2.2.1- 就是它,只是版本号 - 它与GTK版本或api级别无关.
  • 有两种不同的apis:webkit(webkit/webkit.h)和webkit2(webkit2/webkit2.h).主要区别在于webkit2使用多进程架构进行渲染,javascript和插件,​​而不是webkit的单进程架构.

WebKitGTK +可以针对GTK + 2或GTK + 3进行编译.这将导致库文件名分别为libwebkitgtk-1.0.so或libwebkitgtk-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


Jus*_*nen 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。该选项应该是最面向未来的。