所以最近我一直在玩 Vala 和 Gtk+3.0,我决定创建一个非常简单的网络浏览器作为我的一个应用程序的一部分,以便显示我的一个网页,它使用 Google Maps API 来显示一些标记. 我创建了一个如下所示的类:
using Gtk;
using WebKit;
public class WebBrowser : Window {
private string URL = "";
private WebView view;
// Constructor
public WebBrowser () {
this.view = new WebView();
var settings = this.view.get_settings();
settings.enable_plugins = true;
settings.enable_javascript = true;
this.add(view);
}
public void visit (string url) {
this.URL = url;
this.view.load_uri(this.URL);
}
}
在我使用的编译标志中
--pkg gtk+-3.0 --pkg webkit2gtk-4.0
类是这样使用的(这里将使用随机数据):
var browser = new WebBrowser();
browser.set_title ("Custom window title!");
browser.default_width = 1200;
browser.default_height = 800;
browser.visit ("http://acid3.acidtests.org/");
browser.show_all ();
它有效。它在测试中得分为 100/100。唯一的问题是,我不能使用实际的 WebKit 对象。当我调整窗口大小时,WebKit 行为正常并且它正确调整网页大小,但我无法关闭窗口,也无法以任何方式与网页交互。我可以处理一些信号并手动关闭窗口,但 WebKit 仍然出现“冻结”。有没有办法让鼠标控制对象或者这只是一个错误?起初我认为这与我使用 gtk+-3.0 和 webkit2gtk-4.0 可能适用于某些较新版本的 gtk 的事实有关,但在某处我读到 webkit2gtk-3.0 被重命名为 webkit2gtk-4.0 确实,如果我使用旧版本的 WebKit2,我的应用程序将无法编译。