Как вернуться на предыдущую страницу, если на веб-странице нажата кнопка «Назад» браузера, даже если хеш-код изменен? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть веб-страница, на которой мои теги привязки ссылаются на один из элементов на той же странице, используя #id.Но это меняет мой URL, так как добавляет #id в суффикс.Так что теперь, когда я хочу вернуться на страницу, с которой я пришел, нажав кнопку «Назад» в браузере, он не возвращается на предыдущую страницу, а возвращается к выбору хеша, который я сделал, щелкая теги привязки.,Пожалуйста, помогите мне, дав решение этой проблемы.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы можете использовать функцию history.replaceState() из History API для достижения такого поведения.Когда пользователь нажмет на якорь, вы просто замените текущий элемент истории вместо добавления нового.

Редактировать: window.location.replace()

Другой подход заключается в использовании window.location.replace () , который не добавляет новую запись в историю браузера:

Метод Location.replace () заменяет текущий ресурс ресурсом по указанному URL-адресу.Отличие от метода assign () состоит в том, что после использования replace () текущая страница не будет сохранена в истории сеансов, то есть пользователь не сможет использовать кнопку «Назад» для перехода к ней.

Итак, что можно сделать для достижения желаемого результата, это добавить обработчик onclick для элемента body с внутренней логикой, которая заменит текущее местоположение, если текущее местоположение не является домашней страницей (или любой другой страницей).Этот обработчик будет похож на код ниже:

function handler (event) {
    if (!isAnchor(event.target) return;                     // return if clicked element is not an anchor (isAnchor function should be also implemented by you. For example, you can add some class on every anchor and check if clicked element is <a> tag with this class)
    if (window.location.href !== window.location.origin) {  // check if you are currently on the homepage
        event.preventDefault();                             // if not on homepage then prevent default <a> tag redirect 
        window.location.replace(event.target.href);         // and replace current history item URL with the new URL
    }
}
0 голосов
/ 17 октября 2018

Когда вы используете хеш-маршрут, он создает новую запись в истории браузера так же, как если бы вы перешли на новую страницу.Поэтому, если вы переходите на свой сайт со страницы на маршрут хеширования на этой странице, а затем переходите на новую страницу, вам придется дважды нажать кнопку «Назад», чтобы вернуться в исходное местоположение.

Итакесли вы перемещаетесь по https://example.com -> https://example.com#myHash -> https:/example.com/another-page, то первое нажатие кнопки «Назад» переходит к https://example.com#myHash, а второе нажатие кнопки «Назад» - к https://example.com

Надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...