Android Webview + WebViewClient + JavaScript + аппаратный ввод - PullRequest
0 голосов
/ 29 марта 2010

У меня есть веб-просмотр, который должен различать внутренние ссылки сайта и внешние ссылки. Я достигаю этого поведения, добавляя html-якорь с именем "#external" к каждому URL-адресу ссылки, который содержит html-атрибут target = "_ blank" с помощью javascript и проверяя URL-адреса с помощью

WebViewClient

shouldOverrideUrlLoading

Это решение прекрасно работает, пока пользователь выбирает ссылку на сенсорном экране. Если пользователь выбирает ссылку с помощью аппаратного метода ввода (например, scroll-ball или enter-key), в URL-адресе запроса отсутствует привязка html, и в результате мое обнаружение внешней ссылки не будет работать.

Есть идеи, что происходит не так?

Спасибо заранее, Alex

1 Ответ

0 голосов
/ 28 августа 2010

У меня такое же поведение в приложении, и оно ухудшается, когда вам нужно использовать javascript на страницах (если вы нажмете на ссылку с трекболом, событие может не пройти ни одному из слушателей javascript).

Я нашел два решения:

1 - Не используйте функцию shouldOverrideUrlLoading, поскольку, если вы ее используете, javascript не будет работать с событиями трекбола. Вы можете работать с методами onPageStarted и onPageFinished, НО android может открывать браузер каждый раз, когда вы нажимаете на ссылку, поэтому вам понадобится creative javascript, чтобы обойти это.

2 - Полностью отключите трекбол, если вы намереваетесь использовать веб-просмотр с некоторым javascript и по-прежнему использовать shouldOverrideUrlLoading.

    @Override
public boolean onTrackballEvent (MotionEvent event)
{
        return true;
}

Мое приложение имеет номер 2.

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