Метод shouldOverrideUrlLoading не вызывается в случае SPA - PullRequest
0 голосов
/ 07 января 2019

Создание приложения для Android с WebView, столкнувшегося с проблемой.

Я хотел бы поместить в WebView одностраничное приложение, построенное с react.js, и управлять им по URL-адресу чарджинга, прежде чем загружать страницу методом shoudOverrideUrlLoading(). Но shoudOverrideUrlLoading() никогда не называется.

Однако, в случае не одностраничного приложения, оно просто работает.

Это проблема между WebView и SPA? Я предположил, что это будет, но не было никаких ссылок.

1 Ответ

0 голосов
/ 07 января 2019

shouldOverrideUrlLoading() вызывается только для запускаемых рендерером навигаций. Это в основном означает:

  • Пользователь нажал на ссылку
  • JS на странице щелкнул ссылку или иным образом пытался перемещаться (например, window.location.href)
  • HTTP-перенаправление для какой-либо другой навигации (код HTTP 3xx)

Противоположностью навигации, инициированной средством визуализации, является навигация, инициированная браузером . Это будет включать в себя любые loadUrl() / loadData() / и т. Д. метод - shouldOverrideUrlLoading() для этих не вызывается.

Одностраничное приложение не будет перемещаться, поэтому API не вызывается. Вместо этого вы могли бы исследовать решение с помощью addJavascriptInterface(), в котором щелчки пользователя вызывали бы вызовы методов для внедренного JavascriptInterface (вместо прямого вызова AJAX).

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