Сохранение изменений DOM после нажатия на ссылку и затем нажатия кнопки «Назад» - PullRequest
5 голосов
/ 14 августа 2011

Я использую метод appendTo () jQuery для добавления элементов в неупорядоченный список.Когда пользователь нажимает другую ссылку, а затем нажимает кнопку «Назад», добавленные элементы исчезают.Есть ли способ сохранить эти изменения с помощью JavaScript?

Ответы [ 3 ]

3 голосов
/ 18 октября 2013

При нажатии BACK некоторые браузеры кэшируют предыдущую (изначально загруженную) страницу.Если вы можете регенерировать страницу с новой перезагрузкой, вы можете использовать контроль кеша 'no-store, no-cache, must-revalidate', чтобы принудительно установить это на BACK.хочет обязательно подтвердитьДля других браузеров (и w3c) кеша не достаточно.

2 голосов
/ 14 августа 2011

Как только ваш пользователь уходит с вашей страницы, DOM отбрасывается. Когда пользователь нажимает кнопку «Назад», он получает свежую копию HTML-кода с вашего сервера (или из своего кэша).

Итак, у вас есть один из 2 вариантов:

  1. Правильный способ - сохранить состояние DOM в файле cookie (или сеансе), а затем при загрузке страницы проверить, присутствует ли этот файл cookie, и, если да, добавить эту информацию.

  2. Поскольку вы не предоставили достаточно информации, я не совсем уверен, чего вы пытаетесь достичь. Таким образом, если файл cookie недостаточно хорош, вам, возможно, придется прикрепить событие щелчка к ссылке, и вместо того, чтобы просто отправить его по этой ссылке, вы сначала сохраните DOM в переменной var theDOM = $('html').clone(true);, а затем загрузите в HTML для этой ссылки с запросом AJAX.

Вы также должны будете сообщить браузеру, что ваша история изменилась. Это может быть достигнуто с помощью нового API истории HTML5. В старых браузерах вы можете сделать что-то подобное через хеш-часть URL (хотя в старых версиях IE даже это не сработает). Затем, когда пользователь нажимает кнопку «Назад», вы перезагружаете этот DOM из вашей переменной ...

В любом случае, это слишком сложно. Вы, вероятно, смотрите на это неправильно. Что вы пытаетесь достичь?

1 голос
/ 14 августа 2011

Если у вас нет проблем с использованием iframe, вы можете использовать его для сохранения предыдущих данных. При iframe событии load напишите js-код, который возьмет сохраненные в него данные и добавит его к нужному элементу. Таким образом, когда вы переходите на следующую страницу и нажимаете кнопку «Назад», iframe загрузится, а затем обработчик события загрузки выполнит свою работу,

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