所以最近我一直在玩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仍然显示为“frozzen”。有没有办法让鼠标控制对象或这只是一个错误?起初我认为这与我使用gtk + -3.0并且webkit2gtk-4.0可能适用于某些较新版本的gtk这一事实有关,但在某处我读到webkit2gtk-3.0已重命名为webkit2gtk-4.0而且事实上,如果我使用较旧版本的WebKit2,我的应用程序将无法编译。
答案 0 :(得分:0)
您运行的是哪个版本的WebKitGTK?如果是2.16,那么你可能会遇到这个错误:https://bugs.webkit.org/show_bug.cgi?id=170450修复程序将在2.16.2中发布,但Fedora已经将补丁添加到其程序包的2.16.1-2版本中。