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

Vee*_*rac 4 python language-agnostic gtk webkit webkitgtk

如何滚动webkit2gtk小部件?

webkitgtk(aka.webkit1)你包装你WebViewScrolledWindow,所以可以使用它的vadjustment属性.

因为wekit2gtk,这次调用WebView刚刚返回None,我看不到其他方法可以调用.

作为解释,我想添加触摸支持webkit2.我通过在小部件WebView ¹上添加透明层来破解我的方式,但现在我正在检测我似乎无法使用它们的触摸.

¹今天发布的版本消除了对图层的需求.尽管如此,我还是接触过,而且我无能为力.

Jus*_*nen 6

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

答案的其余部分没有经过测试,请考虑更像是一个有根据的猜测:

我相信控制滚动的方法是通过DOM API,更具体地说是DOMDOMWindow.scroll*函数.复杂的部分是获得对DOMDOMWindow- 您需要实现一个WebExtension将在Web进程中运行的参考,并允许您在WebPage创建时获得通知.该WebPage.get_dom_document()电话给你一个DOMDocumentDOMDocument.get_default_view()那么应该给你DOMDOMWindow你所需要的.

对于DOM API文档,Mozilla可能是比spartan WebKit-GTK-DOM文档更好的参考.

如果我正在做你想做的事情,我的第一站将是Freenode上的#webkitgtk + IRC频道来检查以上是否真的是一个理智的方式来做你想要的...


iai*_*ain 5

您可以运行一些 javascript 来滚动页面。C API 具有该功能,webkit_web_view_run_javascript()因此您可以为它提供一些 javascript,例如

window.scrollTo(500,0);
Run Code Online (Sandbox Code Playgroud)

并且页面应该滚动。