WebView не распознает состояние истории в некоторых случаях - PullRequest
1 голос
/ 04 октября 2019

В моем приложении для 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. Есть идеи?

...