В моем приложении для Android я реализовал общий подход «вернуться к нажатой кнопке назад»:
private WebView webView; // my WebView
@Override
public void onBackPressed() {
if(webView.canGoBack()) webView.goBack();
else super.onBackPressed();
}
Но сегодня я заметил странную вещь. Если на самой первой веб-странице, загруженной на webView
, автоматически вызывается history.pushState(...)
, то webView.canGoBack()
вернет false
, что приведет к сбою вышеуказанного подхода (даже если я выполню webView.goBack()
напрямую, ничего не произойдет вwebView), хотя выполнение history.back()
по-прежнему работает внутри самой веб-страницы. Я также пытался вызвать history.pushState
автоматически, используя setTimeout
, с тем же результатом. Однако, если history.pushState
вызывается вручную, то есть вызывается некоторыми пользовательскими событиями, тогда webView.canGoBack()
равен true
и код работает.
Мне кажется, что это ошибка WebViews. Есть идеи?