Получение выбора пользователя при нажатии кнопки браузера назад - PullRequest
1 голос
/ 26 апреля 2011

Мое приложение имеет несколько страниц.На некоторых страницах я давал кнопку возврата, на других страницах она не указана (требование клиента).Теперь на определенной странице у меня есть список вариантов (варианты - слайды изображений с использованием плагина jQuery), которые должны быть выбраны пользователем.Выбор варианта переводит пользователя на следующую страницу.И теперь я хочу получить ту же страницу с тем же выбранным выбором, как выделено при нажатии кнопки назад браузера.При нажатии кнопки «Назад» в браузерах, я думаю, страница перезагружается, теряя значения cookie, т.е. когда я выбираю изображение из набора изображений, оно переносит меня на другую страницу.При нажатии кнопки «Назад» в браузере я хотел, чтобы эта страница с тем же изображением была выбрана из этого набора. Есть ли обходной путь, чтобы я мог получить выбранные значения и в браузере обратно.

Ответы [ 2 ]

4 голосов
/ 26 апреля 2011

Другой плагин делает это:

jQuery BBQ использует событие хеширования HTML5 для обеспечения простой, но мощной истории #hash с закладками.Кроме того, jQuery BBQ предоставляет полный метод .deparam (), а также методы управления состоянием хеш-функции и утилиты разбора фрагмента / запроса и слияния.

http://benalman.com/projects/jquery-bbq-plugin/

1 голос
/ 26 апреля 2011

Вы можете использовать событие onunload, которое будет запускаться почти во всех основных браузерах * при использовании кнопки назад / вперед / обновления. Пусть обработчик событий onunload синхронно отправляет запрос AJAX, содержащий все значения, необходимые для восстановления текущего состояния страницы, в сценарий PHP:

$(window).unload(function() {

    // Insert your code here to collect all values
    // necessary to save a restorable state of the
    // current page.
    //
    // var pageState = {
    //     page: host.pathname,
    //     :
    // };

    $.ajax({
        type: "POST",
        async: false,
        url: "http://mydomain.com/mysave.php",
        data: jQuery.param(pageState),
        error: function(jqXHR, textStatus, errorThrown){
            // your code
        }
        success: function(data, textStatus, jqXHR){
            // your code
        }
    });  

});

Позвольте PHP-сценарию сохранить полученное состояние страницы где-нибудь (например, сеанс, база данных и т. Д.), Чтобы оно было доступно, когда вы собираетесь сгенерировать страницу, которую хотите восстановить в предыдущее состояние.

Имейте в виду, что это решение имеет возможный недостаток.

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

Otoh синхронные запросы блокировать (заморозить браузер, пользователь не может ничего сделать), пока сервер не ответит. Если ваш сервер не отвечает, это может привести к тупику. К сожалению, нет способа отменить синхронный запрос на стороне клиента (по крайней мере, ни одного из тех, о которых я знаю), поэтому вы всегда должны делать синхронные запросы максимально короткими (время обработки на стороне сервера). И чтобы убедиться, что у вас быстрый и надежный сервер, но он всегда должен быть у вас ^^.


* Имейте в виду, что некоторые браузеры (например, Opera) не запускают событие onunload, когда используются определенные кнопки браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...