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

У меня есть страница с множеством динамически генерируемых флажков. Когда пользователи устанавливают эти флажки, большое количество содержимого на странице изменяется динамически через ajax. Конечные пользователи жалуются, что после нажатия кнопки «Отправить», а затем нажатия кнопки «Назад», чтобы что-то изменить, их выбор сдувается, и им приходится делать это снова и снова.

Я видел несколько сайтов (Gmail, Facebook и т. ..) используйте символ решетки в URL-адресе, чтобы взломать кнопку возврата, чтобы она выполняла вызовы AJAX вместо возврата к предыдущему запросу полной страницы.Я хотел бы сделать это, чтобы изменить URL-адрес перед отправкой страницы, чтобы при нажатии кнопки «Назад» загружались ранее выбранные поля.

Например:

В Gmail, если я просматриваю свой почтовый ящик, мой URL-адрес выглядит следующим образом : https://mail.google.com/mail/?shva=1#inbox

Затем, если я нажимаю «Отправлено», выполняется вызов AJAX, и мой URL-адрес изменяется, чтобы выглядеть следующим образом: https://mail.google.com/mail/?shva=1#sent

Мне очень нравится это поведение, и я хочу повторить его. Как это достигается?

  1. Действительно ли ваши ссылки запускают какой-либо javascript или они просто ссылаются на URL с соответствующей информацией о хэш-символе?

  2. Как вы читаете информацию о хэш-символе в javascript?

  3. Каким образом этот тип навигации влияет на поисковые системы? Узнает ли поисковая система, что два одинаковых URL-адреса, за исключением информации после хэша, на самом деле являются разными URL-адресами, и проиндексировать их как таковые?

  4. Какие еще плюсы и минусы этого метода я должен принять во внимание?

ПРИМЕЧАНИЕ. Я использую C # с веб-формами ASP.NET и ASP.NET MVC 3.0, если это вообще имеет значение.

8
задан Chev 9 May 2011 в 22:21
поделиться