Подтвердить что ты не робот

Location.hash и предыстория

Есть ли функция, которая может быть вызвана для предотвращения записи браузером записи назад истории при изменении значения хеша?

Я пишу простую галерею javascript, которая изменяет URL-адрес браузера без перезагрузки страницы, когда пользователь перемещается по каждому изображению.

Это делается путем установки location.hash в уникальный идентификатор изображения.

window.location.hash = imageID;

Проблема заключается в том, когда пользователь нажимает кнопку "Назад" браузера, они должны перемещаться назад через каждое изображение, как будто это была загрузка страницы.

Если они повернули 20 изображений с помощью галереи, они должны щелкнуть 21 раз, чтобы вернуться на предыдущую страницу.

Как предотвратить запись истории назад с помощью javascript?

4b9b3361

Ответ 1

Вы можете использовать replaceState().

Перед изменением хэша вы сохраняете историю, затем вы меняете свой хэш, и, наконец, вы заменяете историю тем, который вы сохранили.

В качестве альтернативы вы можете использовать событие popState.

Ответ 2

window.location.replace позволит вам установить URL-адрес, не добавляя его в историю браузера.

var baseUrl = window.location.href.split('#')[0];
window.location.replace( baseUrl + '#' + imageID );

документация