在GTK+3中滚动WebKit2.Webkit窗口

2024-06-26 13:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如何滚动一个webkit2gtk小部件?在

webkitgtk(又名。webkit1)将WebView包装在ScrolledWindow中,因此可以使用它的vadjustment属性。在

对于wekit2gtk,对WebView的调用只返回None,我看不到其他可调用的方法。在

作为解释,我想为webkit2添加触摸支持。我通过在WebViewwidget上添加一个透明层来破解这一点,但现在我发现我似乎无法使用它们。在

¹今天发布的一个版本取消了对顶层的需要。然而,我有触碰,却无能为力。在


Tags: 方法版本none属性部件又名webkitgtkwebview
2条回答

WebKit2中的进程分离有一些优点,但它也使许多事情变得更加复杂。我相信滚动是其中之一:它发生在web进程中,因为滚动条现在由webkit处理,而不是Gtk小部件。触摸处理也应该如此:它部分是在web过程中完成的。Carlos Garcia Campos写了一篇关于使用WebKitWebExtension来帮助解决这个问题的blog post。请注意,设计对您的代码也有很多影响:部分代码将在完全不同的进程中运行。在

其余答案未经测试,请将此视为更具教育意义的猜测:

我相信控制滚动的方法是通过DOM API,更具体地说是DOMDOMWindow.scroll*函数。复杂的部分是获取对DOMDOMWindow的引用,您需要实现一个WebExtension,它将在web进程中运行,并允许您在创建WebPage时得到通知。WebPage.get_dom_document()调用给您一个DOMDocument,而{}则应该给您所需的DOMDOMWindow。在

对于domapi文档,Mozilla可能比spartan WebKit GTK DOM文档更好。在

如果我在做你想做的事情,我的第一站就是Freenode上的#webkitgtk+IRC频道,检查上面的方法是否真的是你想要的。。。在

您可以运行一些javascript来滚动页面。C API具有函数webkit_web_view_run_javascript(),因此您可以向它提供类似javascript的内容

window.scrollTo(500,0);

页面应该滚动。在

相关问题 更多 >