Как синхронизировать историю браузера при использовании Ajax? - PullRequest
9 голосов
/ 27 августа 2008

Я пишу простое приложение для создания фотоальбомов с использованием ASP.NET Ajax.
Приложение использует асинхронные вызовы Ajax для предварительной загрузки следующей фотографии в альбоме без изменения URL-адреса в браузере.

Проблема в том, что когда пользователь нажимает кнопку назад в браузере, приложение не возвращается к предыдущей фотографии, вместо этого оно переходит на домашнюю страницу приложения.

Есть ли способ обмануть браузер, добавляя каждый Ajax-вызов в историю просмотра?

Ответы [ 8 ]

15 голосов
/ 28 августа 2010

Обновление: теперь есть HTML5 History API (pushState, popState), который не поддерживает функциональность HTML4 hashchange. History.js обеспечивает кросс-браузерную совместимость и необязательный hashchange запасной вариант для браузеров HTML4.

Ответ на этот вопрос будет более или менее таким же, как мои ответы на эти вопросы:

Таким образом, вы определенно захотите ознакомиться с этими двумя проектами, которые объясняют весь процесс хеширования и добавляют ajax в смесь:

  • jQuery History (использование хэшей для управления состоянием ваших страниц и привязки к изменениям для обновления вашей страницы).

  • jQuery Ajaxy (расширение ajax для истории jQuery, позволяющее создавать полноценные веб-сайты на ajax, оставаясь при этом совершенно незаметным и изящно разлагаемым).

4 голосов
/ 27 августа 2008
3 голосов
/ 27 августа 2008

Многие веб-сайты используют для этого скрытый iframe, просто обновляют iframe новым URL, который добавляет его в историю просмотров. Затем все, что вам нужно сделать, это обработать, как ваше приложение реагирует на эти события «кнопки назад» - вам нужно либо определить состояние / местоположение iframe, либо обновить страницу, используя этот URL.

1 голос
/ 19 апреля 2012

Вы можете использовать простой и легкий PathJS lib.

Пример использования:

Path.map("#/page1").to(function(){
    ...
});

Path.map("#/page2").to(function(){
    ...
});

Path.root("#/mainpage");
Path.listen();
0 голосов
/ 13 июля 2013

Если вы используете Rails, то обязательно попробуйте Wiselinks https://github.com/igor-alexandrov/wiselinks. Это швейцарский армейский нож для управления состоянием браузера. Вот некоторые подробности: http://igor -alexandrov.github.io / blog / 2013/07/11 / way-to-wiselinks-1-dot-0 / .

0 голосов
/ 27 августа 2008

Информация : Ajax Navigation является обычной функцией готовящегося IE8.

0 голосов
/ 27 августа 2008

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

0 голосов
/ 27 августа 2008

Обновление 3.5 SP1 теперь поддерживает историю браузера и кнопку возврата в ASP.NET ajax.

...