Я пишу устанавливаемый PWA и, насколько это возможно, хочу, чтобы поведение кнопки «Назад» отражало установленное приложение на мобильном телефоне. Так, например, я хочу, чтобы back
вернулся в базовое состояние, а затем последующий back
, чтобы выйти из приложения. Кажется, API истории не достаточно богат.
В частности, есть ли способ узнать мою позицию в массиве истории? Его часто называют стеком, но это не совсем правильно, поскольку предметы никогда не «выталкиваются». Например, если я pushState(); pushState(); pushState(); back(3)
, то history.length==4
, хотя я сейчас на позиции 1. Как я могу получить это 1
?
Аналогично, есть ли способ опроса состояния предыдущих записей без перехода к ним? Я думал, что URL записи моего приложения может replaceState({page:1})
, поэтому впоследствии я могу перебирать записи истории, определять свою дельту между моей текущей позицией и позицией входа, а затем вызывать back(delta)
.
Это усложняется тем, что приложение использует OAuth, и поэтому некоторые записи в массиве истории принадлежат поставщику OAuth.