• 23
  • Jan

前些日子在写Pagico客户端时,对WebKit的GTK绑定(以下简称WebKitGtk)接触比较多。因为Pagico的客户端是使用WebKit来渲染Web页面的。

事实上,WebKitGtk完全没进入生产状态,用来显示HTML页面倒算了,用它来写浏览器还真不是时候。

WebKitGtk,居然连JS的Open Window都没有处理,导致很多JS相关的功能都无法工作。这就是之所以Pagico for Ubuntu还是Beta的原因。

Pagico的客户端,事实上就是一个缩小版的浏览器,很多地方都需要与JS交互。

既然WebKitGtk还不成熟,为何还要用它呢?

首先Pagico作为跨三个平台的软件,有一个标准的网页渲染引擎是需要的。WebKitGtk虽然现在还不成熟,但是可以预见的将来,WebKitGtk是会很快能得到充分应用的。

一个就是Google Chrome for Linux,另外一个就是GNOME平台了。

昨天在邮件列表中看到,WebKitGtk再一次落选GNOME 2.26的候选模块。这倒不是因为不成熟,而是因为Evolution、Devhelp等软件依旧在使用GtkHtml,没有转向WebKitGtk所致。不过开发者已经几乎设定,GNOME 2.28当中,是肯定要引入WebKitGtk的。

而Google Chrome for Linux,就更不用说了,2009年要出来了!无论转不转用Chorme,试用它那是肯定会的。

对了,前面提到的WebKitGtk处理JS操作窗口方面,实际上在最新的Trunk中已经实现了,在r38834以后。Gentoo源里的还是r37894。希望尽早得到更新!

WebKit确实是个优秀的Render!

» You can leave a comment.

22 Comments

  1. 恩?如果TRUNK已经有了,是否你可以直接用那个新的版本?这样不就解决了很多JS操作方面的不足了吗?

  2. M

    我真不知道为什么要搞GTK这玩意
    编程不方便,移植不方便,管理不方便,文档乱七八糟,模块一塌糊涂

    搞了十几年,字体都搞不好。据说什么运行速度快,但是现在还比不了Qt快

    • GTK在你话下似乎是一无是处,但是它却成功地应用到了那么多地方。你不觉得你应该去好好了解它一下吗?

  3. JJx2

    我也在尝试用WEbKitGtk写一个小型的“嵌入”浏览器
    结果卡在了中文的方块问题上

    尝试改变默认编码跟默认字体,无果。

    望博主指点。

    • 这估计是WebKitGtk的Bug,一直以来都存在这个问题。
      解决方法你可以参考这里:http://linuxdesktop.cn/2008/08/02/galaxium-messenger.html

      这篇文章的中间有一段讲到解决中文显示的。

      • 山猫

        对了,
        WebKitGtk 分别支持 pango 和 freetype 字体的,

        原先以为 pango 字体会比 freetype 的显示效果更好(比如 firefox)

        可是 --with-font-backend=pango 编译后中文却很多缺失,
        只得回头重新用 freetype 来编译。

        嗯,似乎 webkit 的选字有问题,
        我 fontconfig 已经设了默认中文字体是 文泉驿正黑,
        可 freetype 的时候很多地方都是用的宋体,

        而 pango 时,那些 freetype 下宋体的中文却变成了下划线。

        实在麻烦啊,我只是想要中文一律文泉驿正黑的,
        后来没有办法只得将文泉驿正黑之外的中文字体全咔嚓掉。

        • 是啊,我搞不明白为什么WebKitGtk渲染中文字有问题。应该是Bug

          • 山猫

            TualatriX 给看看如何使用 Undo 啦~

            在源码里已经看到有 undo action 了,可 Ctrl + Z 就是没法用,
            右键也没有撤销

          • 山猫

            嗯,看错, win、mac、qt、wx 平台的 WebKit 都支持 undo,

            然而 gtk 平台下是


            bool EditorClient::canUndo() const
            {
            notImplemented();
            return false;
            }

            bool EditorClient::canRedo() const
            {
            notImplemented();
            return false;
            }

            void EditorClient::undo()
            {
            notImplemented();
            }

            void EditorClient::redo()
            {
            notImplemented();
            }

  4. 山猫

    在r38834以后实现了 new-window 的处理了?

    为何我的 r40306 还是没有呢?

    源码里都没找到新窗口的处理……

  5. 山猫

    觉得 webkitgtk 作为富文本编辑器还不错了,起码足以在 Evolution 里代替 gtkhtml3 编辑 html,

    可是 webkitgtk 至今没有 undo 管理,没撤销动作的编辑器太那啥了

  6. Lynx

    刚发现原来 Gentoo 的软件好老……

  7. 山猫

    TualatriX 啊,

    我已经给 WebkitGtk 提交了 Undo/Redo 补丁,

    在表单和 gmail 里编辑文字不怕犯错了~

  8. 山猫

    有心给 gtk.TextView、gtk.Entry 也加上 Undo/Redo 支持,
    好让 xchat 里不怕犯傻,

    可是又不知道怎么跟那些自己处理 Undo/Redo 的程序避免冲突。

    再次鄙视破烂的 Gtk

  9. Sally

    菜鸟在这里弱弱地问一下,将Webkit移植到2410平台后浏览网页一直都采用iso-8895-1编码,以致中文网页显示乱码。但在PC机上模拟却能正常浏览中文网页,各路高手帮帮忙看问题在哪,万分感激。

Leave a Comment