Редактирование и клавиша Back

 
0
 
JavaScript
ava
NIMahno | 24.10.2003, 13:23
Мы тут пишем редактор некоей структуры. При кликах на определенные места структура меняет свой вид (что в свою очередь видоизменяет класс, приаттаченный к старнице через параметр). Данные передаются через HttpServletRequest, потом идет редирект на ту же страницу с выводом обновленных данных.

И вот возникает очень неприятный момент. Пользователь может нажать Back - и страница вернется к предыдущему виду структуры, НЕ СООТВЕТСТВУЮЩЕМУ текущему значению данных в классе. И при нажатии на клавишу Save запишутся не те данные, которые видит пользователь...

И вот тут - еще раз вопрос: как заблокировать запись навигации в хистори при обновлениях страницы редактирования этой нашей структуры (чтобы возврат шел не к предыдущему виду структуры, а, например, к той странице, которая и запустила редактор).

Предложения типа "... а почему вы не храните данные прямо в странице..." не подходят ввиду сложности структуры данных...
Ответы (6)
ava
Z_P | 25.10.2003, 10:22 #
Я так понял, ты не хочешь чтобы пользователь не нажимал baсk на броузере? Отключить его не получится из основного окна, можно сделать чтобы открывалось поп-окно, и в нем уже легко отключить
эту панель, и не только..
ava
DENNN | 25.10.2003, 13:10 #
Цитата
и в нем уже легко отключить эту панель,

проблема, как я понял не в панели, а в том, чтоб отрубить ту же функцию по кнопке BackSpace.
Мне на ум приходит только один вариант: использовать PHP и его SESSION, тогда можно добиться, чтоб упользователя в алресе всегда к примеру было http://www.mydomensuxx.ru/index.php.
При таком раскладе даже если сделать history.back() броузеру вернется та же страница.
ava
guest | 05.11.2003, 09:52 #
а может скриптом отрубить
типа if(event.keyCode==backspace){return false}
ava
DENNN | 05.11.2003, 19:33 #
Цитата
а может скриптом отрубить типа if(event.keyCode==backspace){return false}

А если на каком-то из броузеров не заработает, тогда кто виноват будет?
ava
Nobody | 05.11.2003, 20:20 #
DENNN
Если ты отдал пользователю какой-то контент, то ты уже НИКАК не сможешь отобрать его.
Он может взять и сохранить страницу. Или загрузить ее через lynx ;) Какой там Яваскрипт?
ava
guest | 07.07.2004, 13:29 #
есть очень простое решение - совсем простое smile smile smile smile
надо просто в каждую страницу включать либо
1) время генерации
2) номер обращения к класу в сессии
и то же значение сохранять в класе

тогда
при несовпадении данных в класе и странице можно
а) вывести алерт
б) переделать страницу используя DOM
с) на ваш выбор
очевидно что этого должно хватить

ps я лично использую в таких случаях
параметр sequence который есть текущим значением псевдослучайной последовательности с интервалом 1-1000 000 000
это одновременно решает и проблему авторизации ;-)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  guest   DENNN   NIMahno   Nobody   Z_P
advanced
Отправить