Есть много вопросов, которые задают, как изменить класс div в обработчике кликов JavaScript, например, здесь: Изменить стиль Div по клику . Я хорошо это понимаю (просто измените .className), и это работает.
Однако, когда я перехожу по ссылке со своей страницы в другое место и затем нажимаю кнопку «Назад», имена классов возвращаются. (Safari и Firefox понимают это правильно, Chrome - нет.) В Chrome большинство других изменений, которые я делаю динамически, например, для обработки кликов, также возвращаются, когда я возвращаюсь на страницу (хотя он запоминает недавно вставленные новые элементы div).
Обратите внимание, что ни Chrome, ни другие браузеры не перезагружают страницу, когда я нажимаю "назад"; они просто должны взять его из кеша. (Я обновляю состояние на сервере, используя ajax, поэтому он прекрасно работает, когда браузеры перезагружают страницу.)
Я на самом деле не веб-разработчик, так что это немного озадачивает. Какова стандартная практика здесь? Должен ли я использовать history.replaceState () каждый раз, когда меняю div? Должен ли я сохранить изменения в переменной состояния и перезагружать их каждый раз, когда происходит событие popstate? Вместо того, чтобы менять имена классов div, я должен удалить div и вставить новый (со всеми дочерними элементами старого div)?
Я использую ванильный JavaScript здесь (даже без jquery) и предпочел бы сохранить его, если это возможно.