WebKit2 中的进程分离有一些优势,但也让很多事情变得更加复杂。我相信滚动是其中之一:它发生在 web 进程中,因为滚动条现在由 webkit 处理,而不是 Gtk 小部件。触摸处理也是如此:它部分是在 Web 进程中完成的。Carlos Garcia Campos 写了一篇关于使用 WebKitWebExtension 来帮助解决这个问题的博客文章。请注意,该设计对您的代码也有很多影响:部分代码将在完全不同的进程中运行。
其余答案未经测试,请将此视为有根据的猜测:
我相信控制滚动的方法是通过DOM API,更具体地说是DOMDOMWindow.scroll*
函数。复杂的部分是获取对的引用DOMDOMWindow
——您需要实现WebExtension
将在 Web 进程中运行的 a,并允许您在WebPage
创建 a 时收到通知。WebPage.get_dom_document()
电话给你一个DOMDocument
,然后DOMDocument.get_default_view()
应该给你DOMDOMWindow
你需要的。
对于 DOM API 文档,Mozilla可能是比 spartan WebKit-GTK-DOM 文档更好的参考。
如果我正在做你想做的事,我的第一站将是 Freenode 上的#webkitgtk+ IRC 频道,以检查上述是否真的是做你想做的事的一种理智的方式......