2009-07-12 5 views
3

Можно создать дубликат:
How to: Back button support “Ajax”Ajax пейджинга - Enable Назад Кнопка

У меня есть реализация ASP.NET MVC, в котором я получаю частичный вид с помощью JQuery для таких вещей, как пейджинг и фильтрация , Проблема в том, что я нарушаю кнопку браузера, делая это. Как я могу восстановить поведение кнопки возврата (переписать URL-адрес без обновления с помощью фунта? Не знаете, как это работает, и как повторно извлекать данные при нажатии кнопки «Назад»).

Благодарим за помощь!

+0

Paging не требует JQuery. Добавляете ли вы дополнительные возможности? –

+0

Это не о jQuery. Мне просто нужно знать, как я могу сохранить кнопку «Назад», когда обновляю контент через AJAX (например, через jQuery). – Alex

+0

Хм ... можете ли вы использовать шаблон команды здесь? Инкапсулируйте свои действия в объект Command и сохраните их в коллекции команд. Перемещайтесь назад и вперед по нему, когда вы обрабатываете Back и Forward в jQuery. Реализация мудрых, еще не слишком уверен. Не попробуйте :). –

ответ

3

Как вы знаете, javascript paging убивает кнопку «Назад». Но он также убивает способность ссылаться на данную страницу. Чтобы избежать перезагрузки страницы, но поддерживайте кнопку «Назад», вам нужно будет использовать # в URL-адресе. Затем вы сможете использовать кнопку «Назад» (и ссылку непосредственно на страницу), но вам придется анализировать URL-адрес при загрузке страницы, перемещая страницу до нужной.

EDIT:

Получить URL:

var baseURL = location.href.slice(0, location.href.indexOf('#')); 

Затем добавить к URL с новым ресурсом:

location.href = baseURL + '#page2'; 
//you'll probably want to figure out the page number programatically 

Но не забывайте идти к нужным ресурсам на нагрузке :

$(goToResource); 
function goToResource() { 
    var hashURL = location.href.slice(location.href.indexOf('#')); 
    //you AJAX code to load the resource goes here 
} 

Конечно, вы могли бы найти плагин, чтобы сделать все это для вас.

+0

Не могли бы вы добавить пример для этого с помощью jQuery и C#? – Alex

4

Пробуйте использовать jquery.history плагин. Он может прекрасно выполнить то, что вы хотите.

+0

Ух ты, этот плагин! –

1

Пожалуйста, обратите внимание на добавление истории браузера Поддержка at this page

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

<iframe id="__historyFrame" style="display:none;" ></iframe> 

Я только проверял в IE7 и Firefox. Учитывая не документированную проблему с IE, я не уверен, что она будет работать в широком диапазоне браузеров.

Смежные вопросы