У меня есть приложение HTML5, которое управляет историей браузера, чтобы показать правильный URL-адрес для вызовов Ajax. Это отлично работает, но проблема возникает, когда мое приложение имеет гиперссылку на внешний сайт, скажем http://www.google.com. Когда это происходит, история выглядит следующим образом:История HTML5, кнопка «Назад» и внешние ссылки
My App Страница А -> My App Страница B -> Google
Когда пользователь нажимает кнопку один раз, все нормально. Отображается страница моего приложения B.
Но когда пользователь дважды нажимает кнопку «Назад», URL-адрес изменяется, но страница не изменяется. Мое приложение не может сделать правильный вызов Ajax, чтобы показать состояние для моей страницы приложения А, потому что обработчик onpopstate так и не получил вызов. Это связано с тем, что обработчик не был инициализирован, когда браузер вернулся к странице «Мое приложение» (никаких событий не было в этом событии), поэтому я не могу повторно инициализировать обработчик.)
Это опыт работы с Chrome, но я не имеют оснований полагать, что это зависит от Chrome. Есть ли способ обойти эту проблему?
Я знаю, что приложения, подобные Gmail, открывают все внешние гиперссылки в новом окне. Но требования к моему приложению не позволяют мне это делать.
Вы должны использовать обработчик onload в дополнение к обработчику popstate, и вам может понадобиться некоторый обработчик выгрузки (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the- back-button), чтобы разбить кеш браузера. – user123444555621
Я не понимаю, почему 'onpopstate' так и не получил. Его следует вызывать каждый раз, когда пользователь меняет местоположение. –