2008-08-27 3 views
9

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

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

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

ответ

3

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

+0

Если я правильно понял, iframe фактически отправит на сервер запрос без аякса. Это будет ненужной нагрузкой для сервера. Может быть, хорошо для сайтов с низким трафиком, но это определенно не очень хорошее решение - если запрос имеет место. – 2015-11-24 11:10:57

0

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

0

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

14

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

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

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

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

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

1

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

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

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

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

Path.root("#/mainpage"); 
Path.listen();