Vee*_*rac 4 python language-agnostic gtk webkit webkitgtk
如何滚动webkit2gtk小部件?
在webkitgtk(aka.webkit1)你包装你WebView的ScrolledWindow,所以可以使用它的vadjustment属性.
因为wekit2gtk,这次调用WebView刚刚返回None,我看不到其他方法可以调用.
作为解释,我想添加触摸支持webkit2.我通过在小部件 ¹上WebView添加透明层来破解我的方式,但现在我正在检测我似乎无法使用它们的触摸.
¹今天发布的版本消除了对图层的需求.尽管如此,我还是接触过,而且我无能为力.
WebKit2中的进程分离有一些优点,但它也使许多事情变得更加复杂.我相信滚动就是其中之一:它发生在Web进程中,因为滚动条现在由webkit处理,而不是Gtk小部件.同样应该适用于触摸处理:它部分在Web过程中完成.Carlos Garcia Campos写了一篇关于使用WebKitWebExtension来帮助解决这个问题的博文.请注意,该设计对您的代码也有很多影响:部分代码将在完全不同的过程中运行.
答案的其余部分没有经过测试,请考虑更像是一个有根据的猜测:
我相信控制滚动的方法是通过DOM API,更具体地说是DOMDOMWindow.scroll*函数.复杂的部分是获得对DOMDOMWindow- 您需要实现一个WebExtension将在Web进程中运行的参考,并允许您在WebPage创建时获得通知.该WebPage.get_dom_document()电话给你一个DOMDocument和DOMDocument.get_default_view()那么应该给你DOMDOMWindow你所需要的.
对于DOM API文档,Mozilla可能是比spartan WebKit-GTK-DOM文档更好的参考.
如果我正在做你想做的事情,我的第一站将是Freenode上的#webkitgtk + IRC频道来检查以上是否真的是一个理智的方式来做你想要的...
您可以运行一些 javascript 来滚动页面。C API 具有该功能,webkit_web_view_run_javascript()因此您可以为它提供一些 javascript,例如
window.scrollTo(500,0);
Run Code Online (Sandbox Code Playgroud)
并且页面应该滚动。