Оказывается, что window.scrollTo()
работает, вы просто не можете добавить свой собственный метод с именем scrollTo()
. По какой-то причине мой собственный метод scrollTo()
вызывался, когда я вызывал window.scrollTo()
.
Итак, в итоге, чтобы прокрутить WebView до определенного элемента DOM, напишите JavaScript
функцию для прокрутки:
function scrollToElement(id) {
var elem = document.getElementById(id);
var x = 0;
var y = 0;
while (elem != null) {
x += elem.offsetLeft;
y += elem.offsetTop;
elem = elem.offsetParent;
}
window.scrollTo(x, y);
}
и затем из вашего приложения для Android (код Java) скажите WebView загрузить URL-адрес:
webView.loadUrl("javascript:scrollToElement('" + elemId + "')");
Есть некоторые проблемы с этим подходом, такие как прокрутка не будет хорошо анимирована, но общий механизм работает.
Объект окна DOM правильно сообщает текущую позицию прокрутки WebView (см. window.pageXOffset
, window.pageYOffset
или window.scrollX
, window.scrollY)
. Если вы просто хотите узнать текущую позицию прокрутки WebView, напишите немного JavaScript для вызова вашего Java-кода и передачи смещений X / Y.