Nano Hash - криптовалюты, майнинг, программирование

Получение выбора пользователя при нажатии кнопки «Назад» в браузере

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


Ответы:


1

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

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

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

26.04.2011

2

Вы можете использовать событие 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 при использовании определенной кнопки браузера.

26.04.2011
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..