может обработчик события window.onPopState () знать направление навигации? (вперед назад) - PullRequest
4 голосов
/ 02 сентября 2011

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

при первом посещении главной страницы отображается содержимое по умолчанию (безajax).

, когда кто-то уходит со страницы по умолчанию и затем возвращается назад, предоставляется нулевое состояние, когда он должен вернуться на страницу по умолчанию.таким образом, они остаются на второй странице веб-сайта, а не на первой (хотя обработчик может легко использовать ajax для возврата исходного содержимого).

мой единственный способ исправить это - сделать pushState на моемначальная загрузка страницы с информацией о том, что является начальным содержанием.с этим методом кнопка «назад» прекрасно работает!

НО, если кто-то был на www.stackoverflow.com, прежде чем перейти на мой сайт , происходит возврат назад в stackoverflow, а затем снова «пересылка» на мой сайт, отображается начальный контент, но затем перезагружается снова, потому что состояние «popped» не равно нулю.

так что я могу сказать в обработчике onPopState (), идет ли пользователь назад или вперед?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Может ли обработчик события window.onPopState () знать направление навигации? (Вперед, назад)

Есть проблема. Вы можете пропустить состояния (удерживая кнопку назад, выберите нужное состояние). Это невероятно сложно.

когда кто-то уходит со страницы по умолчанию, а затем возвращается «назад», предоставляется нулевое состояние, когда он должен вернуться на страницу по умолчанию. таким образом, они остаются на второй странице веб-сайта, а не на первой (хотя обработчик может легко использовать ajax для возврата исходного содержимого).

Это можно исправить с помощью History.js с дополнительным постоянством данных.

0 голосов
/ 03 сентября 2011

У меня был некоторый успех с использованием события pageshow в Firefox для перехвата этого первоначального входа на сайт с помощью кнопок вперед и назад.

...