Android WebView: как прокрутить до позиции - PullRequest
0 голосов
/ 15 февраля 2019

Я загружаю самостоятельно созданную HTML-страницу в WebView в приложении для Android.

HTML-страница содержит тег типа <a name="here"></a> где-то посередине.

После загрузки этой страницы я хотел бы иметь возможность программно прокручивать эту позицию, как если бы я нажал на ссылку <a href="#here">here</a>.

Я попытался с помощью loadURL и loadDataWithBaseURL, свсе возможные комбинации параметров, которые я мог придумать, безуспешно.

Примечание 1: Я хочу иметь возможность прокрутки до этой позиции после того, как страница уже отображена.

Примечание 2: Iне могу использовать scrollTo(x,y), потому что я не знаю позицию y этого <a name="here"> якоря на странице.Если бы я мог определить позицию y на странице этого тега <a name>, это также решило бы проблему, но я также не знаю, как найти это значение y.

(PS Язагрузка самостоятельно созданной HTML-страницы путем вызова loadDataWithBaseURL(null, _html, null, null, null);, где _html - строка с моей HTML-страницей)

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Отвечая на мой собственный вопрос, благодаря приведенным выше предложениям я обнаружил, что вызов scrollIntoView () работает для меня, например:

  1. Вместо я используюАтрибут "id", например:

  2. Я вызываю webView.loadURL ("javascript: document.getElementById (\" here \ "). scrollIntoView ()");

0 голосов
/ 15 февраля 2019

1) Внутри <script></script> части вашей HTML-страницы создайте функцию Javascript для программного нажатия на ссылку на той же странице:

function myFunction(){
   document.getElementById('myLink').click();
}

2) Проинструктируйте ваш HTML для запуска функции Javascript, как только страница будет загружена на 100%, добавив обработчик событий onload в ваш HTML-тег body , таким образом:

<body onload="myFunction();">

3) Внутри области body вашего HTML, где угодно, создайте пустую ссылку, чтобы иметь возможность щелкнуть нужную привязку (как вы предлагали, ссылкуна ваш якорь # здесь :

<a href="#here" id="myLink"></a>

4) Наконец создайте якорь в нужной позиции внутри HTML:

<a name="here">HERE</a>

Вот и все.Когда страница будет загружена, она перейдет в нужное положение.

Если вы хотите попробовать это перед использованием ... https://jsfiddle.net/vapx8rzk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...