Как использовать location.replace для хэша

0

Я пытаюсь перенаправить пользователей без перезагрузки страницы. Поэтому, если пользователь нажимает на <a href="#link1"> он должен перенаправить на #link2.

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

И если я использую location.replace, он перезагружает всю страницу с сервера, чего я тоже не хочу.

Кто-нибудь может перенаправить пользователя без добавления новой записи истории?

Я не хочу использовать replaceState из-за обратной совместимости с браузерами, которые не поддерживают HTML5. Я также не хочу использовать что-то вроде event.preventDefault() чтобы пользователи могли event.preventDefault() ссылку на ссылку в своем браузере, и она будет работать одинаково.

  • 0
    Вы устанавливаете location.hash как событие ссылки по клику?
  • 1
    Я мог бы упустить что-то жизненно важное здесь, но почему бы вам просто не дать ссылку на #link2 ?
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Я думаю, что вы ищете window.history.replaceState.

  • 0
    Я только что отредактировал вопрос, я мог бы использовать это решение, но я хочу поддерживать старые браузеры
  • 0
    Не могли бы вы добавить шим / polyfill для обработки старых браузеров? такие как github.com/browserstate/history.js
Показать ещё 1 комментарий
0

Вы также можете просто обработать событие onclick с помощью JavaScript и jQuery и прокрутить до якоря без запуска браузера. Вот пример с .animate() jQuery .animate() для плавной прокрутки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню