Кнопка "Back"

NIMahno

Guest
Кнопка "Back"

Получилось так, что для некоторых страниц моего сайта использование кнопки "Back" может привести к непредсказуемым результатам. Можно ли ее как-нибудь заблокировать, т.е. чтобы вернуться на предыдущую страницу можно было бы только средствами сайта, а не браузера.
 

Ямерт

The Old One
Можно ли ее как- нибудь заблокировать, т.е. чтобы вернуться на предыдущую страницу можно было бы только средствами сайта, а не браузера
Как говорит господин Crazy, ты не должен этого хотеть. Нужно делать так, чтобы этих самых непредсказуемых результатов не было. Делать после POST-запросов редиректы, и т.д.
А если ты будешь пытаться запретить пользователю его законную клиентскую функциональность (ходить по Back-Forward, смотреть соурс) - это вызовет у него лишь здоровый презрительный смех.
 

NIMahno

Guest
Хорошо. Подробнее.

Мы тут пишем редактор некоей структуры. При кликах на определенные места структура меняет свой вид (что в свою очередь видоизменяет класс, приаттаченный к старнице через параметр).

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

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

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

Crazy

Developer
Автор оригинала: NIMahno
И вот возникает очень неприятный момент. Пользователь может нажать Back - и страница вернется к предыдущему виду структуры
Лажа у вас, ребятки. Если вы модифицируете структуру, то обязаны использовать POST'ы. А если вы их используете, то при тупом нажатии BACK никакой страницы увидеть не удастся.

Опять же, не забываем про справедливо упомянутые редиректы после постов.
 

young

Новичок
Оригинально :)
Ладно, рассказываю
Если переход с одной странцы на другую происходит через document.replace() то посещенная страница не заносится в историю и, как следствие, кнопрка Back не активна (так как отстутствует список посещенных ранее страниц)

Я пока нашел только одно действительно нужное примемение этого: многошаговый wizard

Другие способы отключить Back я не знаю

Предлагаемый способ - все переходы делать через document.replace()

Хотя если у тебя возникла необходимость заблокировать back - ты что-то делаешь неправильно
 

Crazy

Developer
Увы, document.replace не спасает от любителей устанавливать закладки. :) Так что нужно целую кучу кнопок скотчем заклеивать.
 

fixxxer

К.О.
Партнер клуба
можно открывать "редактор некоей структуры" в новом окне..
 

NIMahno

Guest
На счет пива - подъезжай, тут недалеко...
Соберусь с мыслями и попробую.
Я не неправильно делаю, у меня очередное нестандартное задание, поэтому приходится искать нестандартные решения. А сервер создается для 5-10 довольно продвинутых пользователей, левых туда даже посмотреть не пустят. Конечно, в сопутствующей документации будет о том, что при нажатии back результат их работы будет несколько отличаться от задуманного, но хотелось бы по-надежнее.
 

alx99

Новичок
Автор оригинала: NIMahno
С помощью сессий можно решить, не пуская на посещеную/предыдущую(если строить иерархически или как wizard или просто сверяя даные запрошенные и обновленные) страницу, но лучше действительно сделай редирект после обновления данных
 
Сверху