Владимир Коршунов
20 июля 2011

Как грамотнее сделать переходы по ссылкам на сайте и правильнее сделать интерфейс сайта, где есть необратимые операции с данными?

При этом заметил такое поведение — пользователь норовит нажать кнопку «Назад» в браузере, когда что-то невнимательно прочитал или просто по привычке, но операция уже выполнена системой.



Ага! Вот кто нам портит интернет! :-)

Право пользователя нажать «Назад» или перезагрузить страницу — свято. Бороться с ним бесполезно, максимум, что вы получите — раздражённого пользователя.

Кнопка «Назад» — не кнопка «Отменить»; ничего страшного, что данные изменились. Пользователь имеет полное право посмотреть на предыдущую страницу, даже если она уже неактуальна, мешать ему не надо. А вот если ваша система ломается или меняет ещё какие-то данные без ведома пользователя в тот момент, когда он жмёт кнопку «Назад», то нужно исправить ошибки в её проектировании.

Обычно такие проблемы происходят, когда программисты не знают золотого правила веб-разработчика.

P. S.

Я веду практический курс «Пользовательский интерфейс и представление информации». Дата следующего курса пока неизвестна.

 
Мы напишем вам, когда будет открыта запись. Без спама.

Поделиться

Комментарии

Александр Лазуткин
20 июля 2011

Трудно понять, какую именно ситуаци имел ввиду Владимир, однако есть ситуация подтверждения отправки формы. Если пользователь, после подтверждения, нажмёт кнопку «Назад» в Фаерфоксе, то получит сообщение:
To display this page, Firefox must send information that will repeat any action (such as a search or order confirmation) that was performed earlier.

Как бороться с таким чудом, я пока не придумал.


21 июля 2011

Александр, так не надо ничего придумывать, надо просто следовать золотому правилу веб-разработчика, ссылку на которое я повесил в совете на полях :-) Тогда такой проблемы не будет.


20 июля 2011

По поводу золотого правила разработчика, я бы рассказать свой подход.

Идеологически я разделил все скрипты на «страницы» и «удалённые процедуры». Страницы — это то, что возвращает ХТМЛ для целиковой страницы по запросу из браузера. Удалённые процедуры наоборот принимают какие-то данные от пользователя, записывают их в БД. Результатом их работы язвляется либо код выполнения: успех, ошибка (в случае Аякса) или редирект на страницу (в обычном случае).

Таким образом никогда, даже случайно, не получается создать ситуацию, в которой состояние сайта неопределено.

Артём Большаков
22 июля 2011

Александр, бороться с этим чудом можно чисто техническими средствами. Использование History API (http://diveintohtml5.org/history.html) позволяет управлять поведением кнопки «Назад».


Цель рубрики — обсуждение вопросов дизайна всех видов, текста в дизайне и взаимоотношений дизайнеров с клиентами.

Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры. Мы ожидаем, что такие комментарии составят около 20% от общего числа.

Решение о публикации принимается один раз; мы не имеем возможности комментировать или пересматривать свое решение, хотя оно может быть ошибочно. Уже опубликованные комментарии могут быть удалены через некоторое время, если без них обсуждение не становится менее ценным или интересным.

Вот такой веб 2.0.

Недавно всплыло

4 Начальник считает, что перед встречей нужно обязательно разработать несколько вариантов предложений 6 У меня остаётся ощущение, что я идиот, «рассыпала бобы», но на конкретных ошибках не могу себя поймать 3 4