Однако теперь это мешает другим частям веб-сайта. Всякий раз, когда пользователь щелкает ссылку на другой хэш, это вызывает срабатывание события onpopstate, перезагружая страницу при каждом нажатии простой хеш-ссылки.
Ниже приведен минимальный пример такого поведения. Состояние передается раньше после загрузки страницы, а это означает, что любые привязки по ссылкам, на которые нажимают, автоматически выводят это состояние (что для меня проблема).
Код: Выделить всё
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, '#foo'); // ensure `popState` has been executed at least once.
});
window.onpopstate = function() {
console.log('State popped!');
}Код: Выделить всё
[url=#bar]Click me[/url]Теперь такое поведение обновления страницы при появлении нажатого состояния (при нажатии кнопки «Назад») важно для правильного функционирования приложения. Однако я не знаю, как разделить эти два события:
- Пользователь нажимает кнопку «Назад», что изменяет хэш страницы, поскольку состояние, которое было отправлено, теперь выскакивает.
- Пользователь щелкает хэш-ссылку, что предположительно приводит к перемещению переданной истории страницы из объекта истории в реальную историю браузера. Я предполагаю, что это также извлекает записи истории, которые были отправлены, что означает, что вызывается тот же самый onpopstate.
Подробнее здесь: https://stackoverflow.com/questions/798 ... chor-links
Мобильная версия