Какие есть варианты для изменения строки запроса в URL и обновления истории браузера?

Можно ли как-то изменить URL-адрес или добавить дополнительную историю к "кнопке назад", не обновляя всю страницу?

Мое приложение основано на AJAX, и я хотел бы добавить некоторые "отмененные" события в историю, чтобы пользователь мог просто нанести ответный удар и сохранить старые значения.

Что сегодня возможно? Я слышал, что это может быть в HTML5, но я не проверял, что поддерживается в современных браузерах.

4 ответа

Я думаю, что вы можете использовать window.location.hash отслеживать #part страницы, в вашем случае, #state1, #state2 и так далее.

window.location.hash = '#state' + (++ stateN) установить иstateN = parseInt(window.location.hash.match(/\d+$/)[0])

Смотрите On - window.location.hash - Изменить? для получения более подробной информации о том, как обнаружить изменения хеша местоположения.

Можно использовать встроенный в диспетчер скриптов ASP.NET для обновления истории браузера. Полное руководство для этого находится здесь:

http://www.asp.net/aspnet-in-net-35-sp1/videos/introduction-to-aspnet-ajax-history

Вы можете использовать 301 перенаправление. Лично я бы использовал куки на стороне клиента или сеансы на вашем бэкэнде, чтобы хранить хлебные крошки. Хранение информации о состоянии в URL-адресе является плохой идеей для приложений AJAX, потому что люди могут вернуться к URL-адресу, на котором сторона сервера не в нужном состоянии для ответа.

Другой вариант - предоставить собственную кнопку "Назад", которая знает, на какую страницу вернуться.

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

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

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

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

Другие вопросы по тегам