Прокрутка окна WebKit2.Webkit в GTK+3
Как прокрутить webkit2gtk
виджет?
В webkitgtk
(Ака. webkit1
) вы заверните WebView
в ScrolledWindow
, так что можете использовать его vadjustment
имущество.
За wekit2gtk
этот призыв на WebView
просто возвращается None
и я не вижу другого метода для вызова.
В качестве объяснения я хочу добавить сенсорную поддержку webkit2
, Я взломал мой путь в этом, добавив прозрачный слой поверх WebView
Виджет ¹, но теперь я обнаруживаю прикосновения, я не могу их использовать.
Release Релиз, который вышел сегодня, устранил необходимость слоя сверху. Тем не менее, у меня есть штрихи, и я ничего не могу с ними сделать.
2 ответа
Разделение процессов в WebKit2 имеет некоторые преимущества, но также делает многие вещи более сложными. Я полагаю, что прокрутка - одна из тех вещей: это происходит в веб-процессе, потому что полосы прокрутки теперь обрабатываются webkit, а не виджетом Gtk. То же самое относится и к сенсорной обработке: это частично делается в веб-процессе. Карлос Гарсия Кампос написал пост в блоге об использовании WebKitWebExtension, чтобы помочь в этом. Обратите внимание, что дизайн имеет много последствий и для вашего кода: часть кода будет работать в совершенно другом процессе.
Остальная часть ответа не проверена, пожалуйста, рассмотрите это скорее как обоснованное предположение:
Я считаю, что управлять прокруткой можно с помощью DOM API, а точнее DOMDOMWindow.scroll*
функции. Сложная часть получает ссылку на DOMDOMWindow
- Вам нужно будет реализовать WebExtension
который будет работать в веб-процессе и позволит вам получать уведомления, когда WebPage
создано. WebPage.get_dom_document()
звонок дает вам DOMDocument
а также DOMDocument.get_default_view()
должен дать вам DOMDOMWindow
тебе нужно.
Что касается документации по DOM API, Mozilla, вероятно, является лучшим справочным материалом, чем спартанская документация WebKit-GTK-DOM.
Если бы я делал то, что вы пытаетесь сделать, моей первой остановкой был бы канал #webkitgtk+ IRC на Freenode, чтобы проверить, действительно ли вышеприведенное действительно разумный способ сделать то, что вы хотите...
Вы можете запустить Javascript для прокрутки страницы. C API имеет функцию webkit_web_view_run_javascript()
так что вы могли бы кормить его как JavaScript
window.scrollTo(500,0);
и страница должна прокрутиться.