История HTML5: как я могу увидеть выскочивший URL-адрес (то есть страницу, на которой мы были, когда нажали кнопку «Назад»)

Я использую API истории HTML5

Я замечаю, что если:

  • если я нахожусь на странице под названием /first
  • Я использую pushState в/секунду
  • А затем нажмите кнопку «Назад»

Обработчик событий для window.onpopstate() возвращает состояние для /first, как описано в документации.

Чтобы перейти от /second к /first, я хотел бы видеть извлеченный URL-адрес, т. е. /second в данном случае. Как лучше всего это сделать?


person mikemaccana    schedule 16.04.2012    source источник
comment
Вы видели библиотеки, такие как history.js? Или вы предпочитаете придерживаться реализации по умолчанию?   -  person csupnig    schedule 16.04.2012
comment
@csupnig Я бы хотел придерживаться реализации по умолчанию, если это вообще возможно, однако, если у history.js есть обходной путь, я был бы рад его использовать. Я также мог бы реализовать свои собственные обходные пути, если это необходимо (например, взлом атрибута элемента).   -  person mikemaccana    schedule 16.04.2012
comment
тогда я предлагаю вам взглянуть на их реализацию. Это сработало очень хорошо, когда мы реализовали его на нашем веб-сайте (github.com/balupton/History.js)   -  person csupnig    schedule 16.04.2012
comment
@csupnig Я уже просмотрел history.js, но не могу найти упоминания о нем, предоставляющего URL-адрес, на который была нажата кнопка «Назад», - только новый заголовок очереди. Вы говорите, что это обеспечивает это? Где в документации это?   -  person mikemaccana    schedule 16.04.2012
comment
я бы посоветовал вам взглянуть https://github.com/devote/HTML5-History-API здесь простая библиотека, не требующая обучения   -  person devote    schedule 18.04.2012


Ответы (1)


Вместо правильного ответа я реализовал следующий обходной путь:

  • Использование атрибута data-urlhack в элементе <body> при загрузке страницы
  • В обработчике onpopstate() проверка значения этого атрибута, чтобы я мог перейти с этой страницы (где была нажата кнопка «Назад») на страницу, на которую нас отправила кнопка «Назад».

Также убедитесь, что страницы, загруженные в onpopstate(), сами не пытаются использовать pushState().

person mikemaccana    schedule 16.04.2012
comment
Спасибо за это, я решил проблему, когда я использовал pushState() в функции, которая загружала контент, и это приводило к тому, что навигация и загрузка контента не работали. Я удалил его из функции и добавил в событие по клику, и тогда все заработало. stackoverflow.com/ вопросы/20142705/ - person user1063287; 22.11.2013