как я могу узнать свою позицию в истории браузера? - PullRequest
0 голосов
/ 17 июня 2019

Я пишу устанавливаемый PWA и, насколько это возможно, хочу, чтобы поведение кнопки «Назад» отражало установленное приложение на мобильном телефоне. Так, например, я хочу, чтобы back вернулся в базовое состояние, а затем последующий back, чтобы выйти из приложения. Кажется, API истории не достаточно богат.

В частности, есть ли способ узнать мою позицию в массиве истории? Его часто называют стеком, но это не совсем правильно, поскольку предметы никогда не «выталкиваются». Например, если я pushState(); pushState(); pushState(); back(3), то history.length==4, хотя я сейчас на позиции 1. Как я могу получить это 1?

Аналогично, есть ли способ опроса состояния предыдущих записей без перехода к ним? Я думал, что URL записи моего приложения может replaceState({page:1}), поэтому впоследствии я могу перебирать записи истории, определять свою дельту между моей текущей позицией и позицией входа, а затем вызывать back(delta).

Это усложняется тем, что приложение использует OAuth, и поэтому некоторые записи в массиве истории принадлежат поставщику OAuth.

...