shouldOverrideUrlLoading не работает / перехватывает щелчки по ссылкам во время загрузки страницы - PullRequest
14 голосов
/ 26 февраля 2011

Я использую WebViewClient.shouldOverrideUrlLoading , чтобы перехватывать любые щелчки по ссылкам в WebView.Это работает примерно в 95% случаев, но иногда его просто не вызывают.

Я заметил это при следующих трех обстоятельствах:

  1. Когда ссылка указывает на страницу, ониуже включен.Это не очень большая проблема, и сообщается об ошибке .
  2. Когда страница все еще загружается, если пользователь нажимает на ссылку, она редко ее ловит.Он просто откроет ссылку, никогда не звоня shouldOverrideUrlLoading.
  3. Случайно.Экспериментируя с этим в последние пару месяцев, я заметил, что иногда это просто не улавливается.Это редко, но это случается.

Теперь мой вопрос в основном о том, как решить проблему 2, так как другие менее важны.Однако, если кто-то решил 1 или 3, я хотел бы услышать об этом.

Кроме того, я должен упомянуть, что я пробовал разные возвращаемые значения в shouldOverrideUrlLoading, и я заметил, что всегда возвращение true кажетсяиметь лучший результат, но проблемы, описанные выше, все еще случаются.

Ответы [ 2 ]

7 голосов
/ 27 февраля 2011

Если HTML является вашим собственным, вы можете заменить все традиционные ссылки вызовами вашего собственного Java-объекта, введенного в WebView через addJavascriptInterface().Тогда вы больше не будете зависеть от shouldOverrideUrlLoading().

В противном случае, возможно, попытайтесь запретить пользователю взаимодействовать со страницей, пока onPageFinished().

Я не столкнулся с этой проблемой,но я также не широко использовал WebView с произвольным контентом.

5 голосов
/ 08 июля 2011

У меня была похожая проблема при попытке изменить веб-страницу с помощью js на странице, которая изменяет window.location. Оказывается, что изменение схемы / протокола url заставляет веб-просмотр поймать shouldOverrideUrlLoading. Я знаю, что это вам не поможет, поскольку вы не владеете HTML, но я подумал, что это поможет всем, кто сталкивается с этой проблемой.

...