пишет Ярослав Бирзул

Пассивная защита от дурака

Опубликована 13 декабря 2007 года в категории Практика \ Комментариев: 32

В связи с тем, что моя довольно простая, но удобная идея с защитой от удаления ненароком собрала множество положительных отзывов, я решил серьезно обдумать проблему «защиты от дурака». В принципе, тема довольно интересная, и не избита множеством блоггеров, поэтому должна быть полезной большинству моих читателей.

Защита от дурака

Что я понимаю под защитой от дурака? Это некоторые детали интерфейса, которые препятствуют случайному удалению информации, которое, естественно, приведет к потере данных, и нервных клеток пользователя.

Из предложения выше следует, что каждый из нас хоть раз оказывался в ситуации такого «дурака», случайно нажимал кнопки «Очистить», которые благодарные юзабилисты поместили рядом с кнопкой «Отправить», информация естественно после этого терялась, и вводить её заново было лень. Я уверен, были такие случаи в жизни каждого человека. Итак, приступим.

Этап первый. Проблематика

Давайте осмыслим самые популярные ошибки, которые допускают создатели сайтов. Разумеется они не садисты, просто не всегда руководствуются разумом во время создания своего детища.

  1. Фокус курсора автоматически становится на кнопку отмены, удаления.
  2. Кнопки удаления, отмены, стирания — находятся в подозрительной близости от главных элементов навигации (как-то: кнопки перехода на следующий шаг, полезные ссылки, др.)
  3. Элементы приводящие к необратимым последствиям расположены так, чтобы мозолить пользователю глаза.
  4. Действия приводящие к потере данных необратимы.

Этап второй. Решения

Во втором этапе стоит разобратся с этими проблемами, и решить — как их не допускать.

Итак: фокус.

Фокус штука очень важная. При заполнении формы, фокус при нажатии tab должен переходить на соседнее поле, и только после того, как все поля заполнены — на кнопку перехода на следующий этап. Ни в коем случае фокус не должен устанавливаться на кнопку отмены, удаления и т.п. В случае случайного нажатия пользователем на enter — ни в коем случае не должна произойти потеря информации, столь долго вводимая.

Сами кнопки отмены нужно располагать на некотором расстоянии от главенствующей кнопки, но в то же время в непосредственной связи с ней. В данном случае можно применить группировку по цвету, которую я описывал в заметке о формах. Еще, как вариант, можно (да и нужно) главную кнопку делать больше кнопки отмены где-то на порядок. Лучше всего в 1,5-2 раза — тогда взгляд пользователя сам по себе ляжет на главную кнопку, а не на кнопку отмены. Также лучше всего применить разделение по цвету: лучше всего будет, если главенствующая кнопка будет ярче, насыщеннее, чем кнопка удаления. В идеале — кнопка удаления должна быть серой.

Лучше всего, если батоны (кнопки, ага) приводящие к последствиям, которые нельзя отменить располагать в далеке от пользовательского глаза, но в то же время, не так, чтобы пользователь её по надобности искал с факелом до скончания веков. Т.е. нужно располагать эту кнопку ВНЕ первого экрана (область в браузере, которая открывается сразу после загрузки страницы). Как положительный пример можно привести движок WordPress — у него кнопка удаления записи находится в самом низу, ненароком её не нажмешь никак.

В идеале — все действия пользователя можно отменить. Но практика, как всегда, весьма и весьма далека от идеала, поэтому нужно принимать во внимания 3 вышеперечисленных пункта.

Этап третий. Идейный

Этому этапу я посвятил больше всего своего внимания — в нем я опишу несколько идей, которые помогут защититься от не нарочных действий пользователя.

1. Кнопка удаления\отмены по умолчанию неактивна. Возле неё стоит чекбокс, при отмечании которого, кнопка активируется — очень, и очень перспективная и интуитивная идея, рекомендую воспользоваться в своих проектах.

2. Кнопка удаления\отмены по умолчанию неактивна. Возле неё не располагается никаких элементов, кроме текста примерно такого содержания: «Нажмите на кнопку, чтобы активировать её». Т.е. при первом нажатии кнопка активируется, а уже после этого — можно на неё клацать. Отсеиваются случайные нажатия, но особо одаренные люди могут и пролезть сквозь эту защиту.

3. Поставьте ссылку «удалить», при нажатии на которую удаления не происходит, но появляется соответсвующая кнопка. Опять же, исключает случайные клики в эту область.

4. Если в системе планируется разместить несколько функций помимо удаления, лучше всего создать выпадающий список с выбранным по умолчанию пунктом «выберите действие», которое, естественно, ни к чему не приводит. Рядом с выпадающим списком ставится еще кнопочка OK для защиты от случайного выбора.

Теперь о недостатках:

1. Если рядом с кнопкой стоит чекбокс, интуитивно понятно большинству, что этот чекбокс кнопку и активирует. К сожалению это понятно далеко не всем.

2. Без надписи довольно неясно, что делать. А, как известно, далеко не все люди читают подписи к элементам интерфейсов перед тем, как на них кликнуть.

3. Минусов практически нет, кроме раздражения особо впечатлительных личностей, для которых сделать лишний клик для своего же блага — хуже чем пипиську потерять.

4. Монструозная защита, которая однако предполагает целых три клика, далеко не каждая аудитория поддержит данное решение: гики будут недовольны, а простые юзеры сразу не поймут. Нужно искать компромисс среди вышеперечисленных.

-----------------------------------------------------------------------------------------------

Тем временем Анна Галкина знакомится с азами Adobe Photoshop, Сергей Чаботько пишет нам о разнообразных конкурсных блогах, а Артем Майнас всерьез задумался о пиратстве.

Мише Квакину отдельное мерси за иллюстрацию к данному материалу.

-----------------------------------------------------------------------------------------------

32 ответов в статье «Пассивная защита от дурака»
Nicholass написал этот ответ 13 декабря, 2007 в 2:20

Как лично я вижу защиту от дурака?

Кнопка «сделать что-то плохое» подальше от рабочей области, ибо на блог ру, кнопка «удалить блог» находится под изменяемыми полями и подсвечена, как кнопка в истребителях. Я три раза на нее нажимал, на автомате думая, что это «сохранить».

Кнопка «Удалить» должна быть внизу, на отступе от страницы. На нее на Java Script Должен висеть обработчик. Причем не подтверждалка, а выскакивала формочка, где нужно было ввести рандомный ключ. Как капча. Человек тогда подумает.

Ярослав Бирзул написал этот ответ 13 декабря, 2007 в 2:29

Nicholass, поддерживаю. Как уже написано выше:

> нужно располагать эту кнопку ВНЕ первого экрана (область в браузере, которая открывается сразу после загрузки страницы). Как положительный пример можно привести движок WordPress — у него кнопка удаления записи находится в самом низу, ненароком её не нажмешь никак.

Идея с обработчиком на жабе довольно хорошая, но подойдет не для каждой аудитории. Как я уже говорил — некоторым людям лишний раз кликнуть на кнопку — хуже потери детородного органа :)

ZAV написал этот ответ 13 декабря, 2007 в 2:44

Отличная статья. А насчет капчи при удалении — вообще супер идея :) Только тут она должна быть простым шрифтом и легкочитаемая.

s13 написал этот ответ 13 декабря, 2007 в 11:11

а я для форм вообще не делаю кнопок «очистить» — пусть сами руками удаляют ненужные поля )))

Ярослав Бирзул написал этот ответ 13 декабря, 2007 в 11:27

2 s13: ну и правильно, от греха подальше :) хотя иногда (в очень редких случаях) такой кнопки не хватает. Ну и никуда не убежать от кнопки удаления в любой CMS...

Nicholass написал этот ответ 14 декабря, 2007 в 8:15

Ну не капча, просто выскакивает окошко для ввода (javaScript) и там рандомный код и буков-цифр. Просто копирую/набирая этот код человек уже подумает.

Ярослав Бирзул написал этот ответ 15 декабря, 2007 в 6:29

Nicholass, всё равно немного нецелесообразное решение. Окошко лучше не выводить а можно так:

Нажимаешь на эту кнопку:

Появляется вот такая вещь:

Ярослав Бирзул написал этот ответ 15 декабря, 2007 в 6:32

Т.е. даже если человек нажал на кнопку, на автомате ввел код, кнопка находится на большом расстоянии от поля ввода, нечаянно её не нажмешь. Человек задумается, результата мы достигли, вуаля, аплодисменты. При этом фокус автоматом переставлять на поле ввода капчи, чтобы 2 раза enter не нажимался :)

Nicholass написал этот ответ 16 декабря, 2007 в 1:48

Да, можно и так. Просто в JS есть стандартное окошко для ввода строки.

Ярослав Бирзул написал этот ответ 17 декабря, 2007 в 1:28

А каптчу как туда засунуть? Помоему больше проблем такое решение создает, чем выгод.

powerfox написал этот ответ 22 декабря, 2007 в 8:05

Если я случайно жму очистить, то использую ctrl+z (отменить), чтобы восстановить текст. Поэтому не вижу особой проблемы в этих кнопках. Но, как ты, написал, нужно делать так, чтобы случайностей не было — раздражает.

Ярослав Бирзул написал этот ответ 27 декабря, 2007 в 12:24

powerfox, попробуй нажми ctrl+z в больших полях — вроде поля для комментария (у меня меня undo работает, так что тут потестировать не получится), обычно — там нельзя восстановить.

Ошибочная напасть или 404 в строю | О юзабилити веб интерфейсов написал этот ответ 22 февраля, 2008 в 1:24

[...] и из-за банального человеческого фактора, в котором всяческие защиты от дурака просто не [...]

xes написал этот ответ 2 марта, 2008 в 3:24

а если я не мышкой воспользуюсь, а клавишой ентер? то мне всё равно как далеко находится кнопка от поля ввода.

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

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 3:28

xes, а причем тут это? Фокус всё равно перейдет на форму капчи, и удалить не позволит пока не введешь оную.

xes написал этот ответ 2 марта, 2008 в 3:33

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

xes написал этот ответ 2 марта, 2008 в 3:35

а я могу и ошибиться вводя капчу. не лучшее решение.

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 4:01

> по нажатию ентер всё равно сработает нажатие кнопки

input disabled="disabled" и вопрос исчерпан. Кнопка не нажмется.

> а я могу и ошибиться вводя капчу. не лучшее решение.

человеческий фактор, тут уже юзабилист не виноват, а ошибиться при вводе 4-5 цифр можно либо по причине невнимательности, либо по причине врожденной имбецильности. Либо по случаю идиотизма создателей, которые генерируют невоспринимаемую капчу. Но мы ведь не такие, верно?

xes написал этот ответ 2 марта, 2008 в 4:19

Это верно. Но для пользователя лишний раз что-то водить это трудно. Всё хочется делать в один клик.

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 4:41

Я понимаю это, но от того, что реализовать «откаты» и «корзины» не всегда получается, приходится защищаться от тех людей, которые ненароком что-то удаляют. В один клик.

Александр Реушкин написал этот ответ 2 марта, 2008 в 4:58

А в каком случае нельзя сделать откат?

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 5:06

Скорее не «нельзя», а «трудоемко» и зачастую «дорого». Дорого по затраченному времени и соответственно заплаченным деньгам.

Александр Реушкин написал этот ответ 2 марта, 2008 в 6:27

неужели дороже разработки нового метода? причём неизвестно когда этот новый метод будет готов.

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 6:33

Я в смятении. Какого еще нового метода? В статье описаны методы, которые реализовываются спустя рукава за один час. Сделать откат действия — та еще задача. Слишком трудоемко.

Александр Реушкин написал этот ответ 2 марта, 2008 в 6:38

я имею ввиду ового метода, который по эффективности будет как откат.

Александр Реушкин написал этот ответ 2 марта, 2008 в 6:39

и ещё вопрос не по теме. мне на почту приходит два письма при ответах в комментариях примерно одного и того же содержания. почему так?

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 6:54

Т.к. вы подписались на новые комментарии топика — вам приходит письмо о новом ответе ВООБЩЕ.

Т.к. я отвечаю на ваши комментарии — вам приходит письмо с уведомлением об ответе на ВАШЕ сообщение.

Ярослав Бирзул написал этот ответ 2 марта, 2008 в 6:56

Реализация корзины занимает примерно такой же обьем работ. Больше я аналогов не помню. Подскажете?

Кай Лебен написал этот ответ 14 июля, 2008 в 4:36

Пользователь не такой дундук, как его малюют.

Ярослав Бирзул написал этот ответ 14 июля, 2008 в 6:55

Кай, гребете всех под одну гребенку? Я в статье — нет.

Иногда попадаются именно «такие дундуки, как их малюют».

Arthur написал этот ответ 12 августа, 2009 в 12:53

В админке использую выпадающий список с кнопкой «ок». + после этого еще выводится окно с подтверждение Да/Нет (не на js). Связанно это с тем, что есть возможность массового удаления, а тут уже лучше лишний раз перестраховаться. Список ведь состоит не из одного пункта. Может пользователь хотел выбрать «Опубликовать новости», а случайно нажал на «Удалить выбранное»...

Для кнопки «Очистить» мне больше всего понравился вариант Ярослава, с инпутом рядом с неактивной кнопкой. Больше, как мне кажется, просто не нужно.

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

Не так:

[удалить] [отправить]

А примерно вот так:

[удалить] [отправить]

Arthur написал этот ответ 12 августа, 2009 в 12:54

В последнем примере убрались пробелы)...

Добавьте свой ответ:
Контантая информация:
  • Телефон: +38 091 314-600-4,
  • E-mail: my@birzool.com,
  • Skype: dezmaster,
  • jabber: dezmaster@gmail.com,
  • icq: 486914