Я знаком с несколькими подходами к тому, как заставить кнопки «Назад» работать в приложениях AJAX в различных ситуациях, но я не нашел решения, которое будет корректно работать в моем конкретном сценарии.
Страницы, с которыми я работаю, являются интерфейсом поиска для сайта. Вы вводите термины в обычном окне поиска, нажимаете «перейти и перейти на страницу результатов поиска». На странице результатов поиска имеется множество элементов управления пользовательским интерфейсом для фильтрации / сортировки результатов поиска, чтобы найти то, что вы ищете. Некоторые из Операции, запускаемые этими элементами управления, могут занять (относительно) длительное время (например, несколько секунд).
Эта задержка хороша в том случае, когда пользователь изначально фильтрует / сортирует свои результаты ... есть хороший счетчик AJAX и так далее ... однако, когда пользователь нажимает на результат поиска, а затем нажимает кнопку НАЗАД, Я бы хотел, чтобы страница была мгновенно восстановлена до того состояния, в котором она находилась при нажатии.
Я могу восстановить состояния, используя IFRAMEs / идентификаторы фрагментов в качестве словаря истории страниц, но в конечном итоге происходит следующее: когда пользователь впервые нажимает кнопку «Назад», загружается начальная страница, а затем он (повторно) выполняет запрос AJAX. чтобы вернуть состояние страницы, что вызывает вращение AJAX и еще одно возможное ожидание в течение нескольких секунд.
Существует ли какой-либо подход, который не требует такой двухэтапной загрузки страницы, когда пользователь возвращается на страницу с помощью кнопки НАЗАД?
Отредактировано, чтобы добавить: я неравнодушен к jquery, но я был бы рад решениям, которые зависят от других библиотек / наборов инструментов или которые являются автономными / raw javascript.
Отредактировано, чтобы добавить: я должен был добавить, что я стараюсь избегать куки / сессий, потому что это препятствует тому, чтобы люди открывали несколько окон / вкладок браузера и манипулировали различными наборами результатов поиска одновременно.
Редактировать: Мэтт, можете ли вы уточнить предлагаемое решение (запуск события изменения страницы с помощью идентификатора фрагмента)? Я вижу, как это поможет при нажатии кнопки НАЗАД на той же странице, но не на НАЗАД на страницу результатов поиска после нажатия на конкретный результат.