Как сохранить синхронизацию истории браузера при использовании Ajax?

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

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

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


person urini    schedule 27.08.2008    source источник


Ответы (8)


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

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

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

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

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

person balupton    schedule 28.08.2010

В MSDN есть статья об управлении историей браузера в ASP.NET AJAX

person Espo    schedule 27.08.2008
comment
@Keltex Я заменил ссылку ссылкой на MSDN. Спасибо :) - person Espo; 21.04.2010

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

person James B    schedule 27.08.2008
comment
Если я правильно понимаю, iframe фактически отправит на сервер не-ajax-запрос. Это было бы ненужной нагрузкой на сервер. Может быть приемлемым для сайтов с низким трафиком, но это определенно не лучшее решение - ЕСЛИ запрос выполняется. - person Simon Steinberger; 24.11.2015

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

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

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

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

Path.root("#/mainpage");
Path.listen();
person Nikita Koksharov    schedule 19.04.2012

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

person Community    schedule 27.08.2008

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

person Darren Kopp    schedule 27.08.2008

Информация: Ajax Navigation - это обычная функция будущего IE8.

person entropia    schedule 27.08.2008