1

У меня есть одностраничное приложение JS, в котором используется API истории. Пользователь приземляется на мою страницу и перемещается вокруг, и под капотом происходит пучок pushState s и replaceState. Все переходы происходят в JS, перезагрузка страницы не происходит. Мой вопрос заключается в том, как определить, вернулся ли пользователь в первое место в моем собственном приложении, то есть еще одно нажатие кнопки «Назад» приведет к перезагрузке браузера предыдущей страницы, на которой был включен пользователь?Как определить, есть ли на первом URL-странице загрузки страницы?

Заранее благодарен!

+0

Вы можете попробовать обработать события 'popState' и проверить данные состояния (в которых вы можете хранить такие вещи, как счетчики страниц, маркеры и т. Д.). Или просто сохранить состояние приложения в некоторой переменной. Поскольку перезагрузка страницы не происходит, эта переменная не исчезнет. – ahwayakchih

ответ

4

Вы можете обнаружить переход с подсекать на onpopstate события и проверки, когда пользователь фактически управляет,:

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate

Заметим, однако, что если вы Я попытаюсь остановить такой переход, это может быть трудно сделать:

how to stop browser back button using javascript

+0

Это тоже сработает! – dane

0

Вы могли бы использовать что-то вроде:

if(window.location == <the url of the root) { 
    //Do stuff here 
} 
+0

Этого может быть недостаточно, например: пользователь может вернуться на «домашнюю страницу» через меню, не используя кнопку «назад». Таким образом, «домашняя страница» будет посещаться более одного раза в его «путешествии», а щелчок «назад» не обязательно означает, что пользователь покинет сайт. – ahwayakchih

+0

Что делать, если пользователь переходит из местоположения A в B в A (нажав ссылку, а не кнопку «Назад»)? – geoffliu