Подтвердить что ты не робот

Почему модальные диалоговые окна зла?

Повторите недавний вопрос в когда действительно нужны модальные диалоги?. ПОЧЕМУ это модальные диалоги? Это потому, что люди все равно их не читают? Потому что они часто реализуются так плохо? Что-то еще?

4b9b3361

Ответ 1

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

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

Это зло.

Рассмотрим приложение адресной книги. Предположим, у вас есть существующий человек в адресной книге, и вы хотите добавить своего соседа по комнате.

  • Если диалог "добавить человека" немодален, вы можете перевернуть назад и вперед между старой записью и новой копией и вставкой ваших данных.
  • Если диалог "добавить человека" является модальным, вы не можете ничего сделать со старой записью, когда диалог добавления открыт. Вы можете выбрать что-то, чтобы скопировать, прежде чем выбрать "добавить", но только одно. Все остальное нужно вручную перепечатать.

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

Ответ 2

Люди не читают их, и это хорошо. Вы хотите, чтобы люди формировали привычки вокруг вашего пользовательского интерфейса, но наличие важного выбора в всплывающем меню просто заставит пользователя нажать ОК.

Они прерывают пользователя, они не позволяют пользователю делать другие вещи.

Что делать, если вы хотите скопировать и вставить что-то из главного окна? Что делать, если вы хотите скопировать сообщение в модальном диалоговом окне? Что делать, если вы не заботитесь.

Просто сравните диалог поиска IE с Firefox

Сравнить IE "Вы хотите, чтобы мы помнили этот пароль для вас?" к Firefox

Ответ 3

Лучшие пользовательские интерфейсы являются модальными. Как самое худшее.

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

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

Разработка хорошего модального пользовательского интерфейса может быть жутко трудной задачей для нетривиальных приложений, особенно для программ общего назначения, предназначенных для использования широким кругом пользователей для еще более широкого круга задач. Системы меню и диалоговые окна пытаются устранить пробел, позволяя создавать небольшие нестандартные модальные разделы в более крупном немодальном приложении. Тем не менее, никто из них не очень хорошо оценивает, и неправильное использование и чрезмерное использование оставили их с плохой репутацией, часто рассматриваемой как первое убежище ленивого программиста. Диалоговые окна, в частности, чаще всего используются в качестве средства принуждения пользователей к идее программиста (или дизайнера) о том, как приложение должно использоваться, или налагать трудные дизайнерские решения и сложную обработку ошибок у пользователя, а не на их тезкую цель: коммуникации.

Действительно, рост веб-приложений привел к таким тенденциям на многих форумах, в новостных группах и Q & A таких сайтах, как программисты, привыкшие писать сверхлинейную логику, которая побуждает пользователей вводить данные, когда это необходимо программа, а не когда она доступна пользователю... вынуждаются в систему, в которой пользователи могут перемещаться нелинейно, и вполне могут рассмотреть любую попытку ограничить эту свободу, как причудливое раздражение, которое будет искажено, а не необходимое зло. Жалобные вопли этих бедных кодеров эхом обходят "Сеть", поскольку их попытки заставить это грубое модальное поведение на немодальную систему рушиться вокруг них. Для тех из нас, кто долго страдал от жестоких "диалогов", это прекрасная мелодия.

Ответ 4

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

Ответ 5

В приложении для потребительского стиля они более или менее бесполезны; пользователи не читают их, учатся увольнять их, а когда они их читают, обычно их путают. Я думаю, что диалог "Да/Нет/Отмена" - это ленивый дизайн пользовательского интерфейса. Диалог "Кнопки говорят, что они делают" немного лучше, потому что пользователю не нужно много читать.

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

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

Ответ 6

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

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

В некоторых средах модальные диалоги только ограничивают пользователя в контексте одного приложения (или, может быть, меньше). Действительно неправильные модальные диалоги не позволяют пользователю делать что-либо еще во всей операционной системе (скажем, в Windows).

Ответ 7

Одна из причин, по которым мне они не нравятся, заключается в том, что они отображают информацию в последовательном порядке (по одному объему информации за раз), а не параллельно (вся информация, которую вам нужно увидеть сразу), параллель позволит пользователь, чтобы выбрать, что они хотят посмотреть, где, как в серийном, вы в значительной степени вынуждаете их выбирать вариант.

Плюс также тот факт, что они нарушают поток управления пользователями (например, крадут фокус с объекта, над которым вы работаете), который мне действительно не нравится. Таким образом, по сути от этого пользователь просто нажмет OK, чтобы они могли вернуться к тому, что они там делают, и игнорировать информацию в диалоговом окне.

Имейте в виду, что вы все еще нуждаетесь в них в некоторых случаях.

Ответ 9

Я не помню, где я увидел это в первую очередь, но лучший подход к модальному диалогу часто позволяет легко найти и использовать функцию "отменить". Проводник Windows фактически выполняет оба действия при удалении файла. Он запрашивает подтверждение (модальное диалоговое окно), а затем сразу же после удаления файла в меню "Правка" есть опция "Отменить удаление". просто простой способ получить доступ к корзине, конечно, но в этом случае Microsoft действительно могла бы просто покончить с диалогом.

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

Тем не менее, иногда вам действительно нужен диалог. Подумайте обо всех вариантах в типичном диалоговом окне Print. Какой принтер? Все страницы или несколько? Сколько копий? Я не знаю, как вы это сделаете без диалогового окна...

Ответ 10

Noboy читает их, и они прерывают поток программы. Часто при использовании в качестве уведомления об ошибках они являются прекурсором для отказа программы. Когда пользователь осознает, что происходит, сообщение исчезло, и им остается вспомнить или придумать сообщение, насколько это возможно.

Ответ 11

Лично я думаю, что это полностью зависит от того, как это делается.

Попробуйте скопировать 10 файлов, где каждый файл существует в целевом каталоге, сделайте это с помощью проводника Windows.

Является единственным модальным диалогом для каждого файла, который действительно является правильным ответом в такой операции. Я знаю, что у вас есть "Да для всех", но вся система циклов должна быть построена по-разному. Он должен был собрать все файлы, которые есть в одном большом списке, и спросил один раз "Что вы хотите делать с этими файлами", а затем разрешите мне выбрать для каждого файла в списке что делать, прежде чем нажимать "ОК" и возобновить операцию.

И много раз диалоговые окна просто прерывают обычный рабочий процесс.

И да, люди не читают диалоговые окна. Итак, золотой совет, если вы должны использовать диалоговое окно, - это изменить его.

Вместо "Вы хотите удалить эту строку в базе данных?", попробуйте сформулировать ее так, чтобы вы спрашивали (но это не правильно сказано) "Вы хотите, чтобы эта строка не удалялась в базе данных?" Таким образом, если они просто ударят "Да", что является типичным ответом от пользователя, который просто хочет с ним справиться, они ничего не сделают.