Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Редактирование и клавиша Back


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

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

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

Предложения типа "... а почему вы не храните данные прямо в странице..." не подходят ввиду сложности структуры данных...

Автор: Z_P 25.10.2003, 10:22
Я так понял, ты не хочешь чтобы пользователь не нажимал baсk на броузере? Отключить его не получится из основного окна, можно сделать чтобы открывалось поп-окно, и в нем уже легко отключить
эту панель, и не только..

Автор: DENNN 25.10.2003, 13:10
Цитата
и в нем уже легко отключить эту панель,

проблема, как я понял не в панели, а в том, чтоб отрубить ту же функцию по кнопке BackSpace.
Мне на ум приходит только один вариант: использовать PHP и его SESSION, тогда можно добиться, чтоб упользователя в алресе всегда к примеру было http://www.mydomensuxx.ru/index.php.
При таком раскладе даже если сделать history.back() броузеру вернется та же страница.

Автор: Гость_DeathStorm 5.11.2003, 09:52
а может скриптом отрубить
типа if(event.keyCode==backspace){return false}

Автор: DENNN 5.11.2003, 19:33
Цитата
а может скриптом отрубить типа if(event.keyCode==backspace){return false}

А если на каком-то из броузеров не заработает, тогда кто виноват будет?

Автор: Nobody 5.11.2003, 20:20
DENNN
Если ты отдал пользователю какой-то контент, то ты уже НИКАК не сможешь отобрать его.
Он может взять и сохранить страницу. Или загрузить ее через lynx ;) Какой там Яваскрипт?

Автор: meral 7.7.2004, 13:29
есть очень простое решение - совсем простое biggrin.gif biggrin.gif biggrin.gif biggrin.gif
надо просто в каждую страницу включать либо
1) время генерации
2) номер обращения к класу в сессии
и то же значение сохранять в класе

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

ps я лично использую в таких случаях
параметр sequence который есть текущим значением псевдослучайной последовательности с интервалом 1-1000 000 000
это одновременно решает и проблему авторизации wink.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)