Использование History.js для axax. Отлично работает, но я не понимаю, что происходит, когда пользователь снова входит в мое приложение.

Я использую History.js и Jquery (и немного GWT), я использую метод History.pushState() для хранения полезной нагрузки Ajax, затем в событии statechanged я рисую экран в соответствии с полезной нагрузкой. Теперь внутри моего приложения кнопки браузера назад и вперед работают правильно.

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

Мое приложение загружается, оно не получает события popstate или statechange, но каким-то образом браузер на самом деле рисует экран, чтобы он выглядел точно так, как он выглядел до того, как они покинули мое приложение.

Я хотел бы понять, что здесь происходит.

[РЕДАКТИРОВАТЬ: я был неправ. Мой код выполнялся, и я получил изменение состояния. У меня были некоторые предположения о History.js, и теперь я понимаю, что для правильного кода вы должны получить полезную нагрузку AJAX, а затем вызвать pushstate, чтобы поместить ее в стек. Затем сработает ваше событие statechange, и вы должны в функции statechange прочитать состояние из стека и соответствующим образом нарисовать экран. Тот же код будет выполняться, когда вы запускаете свое приложение в обычном режиме, и тот же код будет выполняться, когда пользователь нажимает кнопку «Назад». ]


person Chris Mcnally    schedule 28.06.2013    source источник


Ответы (2)


Вы должны прочитать URL-адрес, а затем обработать его соответствующим образом. Это то же самое, как если бы вы делали глубокие ссылки на свое приложение прямо из адресной строки.

person offthat    schedule 28.06.2013

Похоже, что браузер показывает кешированное состояние приложения, а не полностью перезагружает его, когда пользователь использует кнопку «Назад», чтобы вернуться в приложение.

Вы можете проверить это, войдя в приложение, щелкнув ссылку внешнего приложения, нажав кнопку «Назад» в браузере, чтобы вернуться, а затем нажав «Обновить». Если он изменяет состояние приложения при перезагрузке, это говорит вам, что браузер кэшировал состояние приложения вместо перезагрузки.

person Mimi Flynn    schedule 28.06.2013