0

我正在用 Vala 和 WebKitGTK+ 编写一个简单的浏览器。我需要做的一件事是将窗口的标题设置为网页标题的标题,因此我使用web_view.notify["title"].connect. 但是,有时 title 的值是null,而它显然不应该是。

我记得的一些例子:

无论如何,使用 Web Inspector 表明页面确实有一个标题集。

这是我应该报告的错误吗?或者也许我做错了什么?这是我正在使用的代码:

//valac --thread --pkg webkitgtk-3.0 --pkg gtk+-3.0 --vapidir=./ test.vala
//The vapidir folder should have webkitgtk-3.0.vapi and webkitgtk-3.0.deps

using WebKit;
using Gtk;

public class Test : Gtk.Window {
    public WebView webview;
    public Test () {
        this.title = "Test";
        this.window_position = Gtk.WindowPosition.CENTER;
        this.set_default_size (800, 600);
        this.hide_titlebar_when_maximized = false;

        this.destroy.connect (() => {
            Gtk.main_quit ();
        });

        var scroll = new ScrolledWindow (null, null);
        this.webview = new WebView ();
        this.add (scroll);
        scroll.add (webview);

        webview.settings.enable_developer_extras = true;
        webview.notify["title"].connect ((sender, property) => {
            if (webview.title != null) {
                this.title = webview.title;
                stdout.printf (webview.title + "\n");
            } else {
                stdout.printf ("(null)\n");
            }
        });

        webview.web_inspector.inspect_web_view.connect ((p0) => {
            var w = new Window ();
            w.window_position = WindowPosition.CENTER;
            w.title = "Inspector";
            w.set_default_size (800,600);
            WebView view = new WebView ();
            unowned WebView view2 = view;
            w.add (view2);
            w.show_all ();
            return view2;
        });
    }

    public static int main (string[] args) {
        Gtk.init (ref args);

        Test app = new Test ();
        app.webview.load_uri ("http://google.com");
        app.show_all ();
        Gtk.main ();
        return 0;
    }
}
4

1 回答 1

0

有一个title_changed为此目的而调用的信号,您应该始终使用 webkitgtk 提供的信号而不是 GLibnotify功能。
(每次值更改时都会发出 GLib notify,即使更改只是为了清除旧值,例如在您的情况下。)

于 2013-05-28T13:54:18.197 回答