window.location.href javascript не вызывает shouldOverrideUrlLoading - PullRequest
4 голосов
/ 31 марта 2011

Мой тест на nexous one (скомпилированный с Android 2.2) показывает, что shouldOverrideUrlLoading не запускается, когда страница перенаправляется через window.location.href.OnPageFinished запускается как обычно.

Может кто-нибудь посоветовать, как перехватить перенаправление страницы JavaScript?Любой другой способ перенаправить страницу в javascript, так что должен срабатывать OverrideUrlLoading?Это ошибка для shouldOverrideUrlLoading?

Спасибо,

Июнь

Ответы [ 3 ]

1 голос
/ 22 октября 2011

В моем случае при использовании window.location = "http://xxx" на моей веб-странице событие shouldOverrideUrlLoading() не вызывается.

Однако, если я использую пользовательскую схему или протокол URL, например androidurl://, shouldOverrideUrlLoading() срабатывает. Мой обходной путь должен был бы использовать собственный протокол и добавить следующий код в методе shouldOverrideUrlLoading():

if (url.startsWith("androidurl://")) {
    url = url.replaceAll("androidurl://", "http://");
}

Это изменит пользовательский протокол обратно на протокол http://, и вы сможете обработать правильный URL-адрес оттуда.

Это работает для меня.

0 голосов
/ 24 декабря 2011

Возможно, вы можете использовать WebChromeClient * onJsBeforeUnload () , чтобы перехватить событие, которое вы собираетесь покинуть текущую страницу , Переопределите onJsBeforeUnload () и установите флаг true .

Затем используйте WebViewClient s onLoadResource () , чтобы перехватить URL-адрес для загрузки. Если флаг равен true , делайте что хотите, например, откройте URL в другом Intent ; иначе ничего не делать.

Кроме того, не забудьте добавить к своему HTML:

<script> window.onbeforeunload = function(){  
   return "Leave?";  
}; </script>
0 голосов
/ 31 марта 2011

Может кто-нибудь посоветовать, как перехватить переадресацию страниц javascript?

Измените Javascript, чтобы вызывать метод для некоторого объекта, который вы вводите в WebView через addJavascriptInterface().

Это ошибка для shouldOverrideUrlLoading?

Возможно. Это, безусловно, ограничение.

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