Почему модальные диалоговые окна злые?
Re недавний вопрос, когда модальные диалоги действительно необходимы?, ПОЧЕМУ модальные диалоговые окна являются злом? Потому что люди их все равно не читают? Потому что они часто так плохо реализованы? Что-то другое?
11 ответов
До сих пор около половины ответов касались недостатков диалогов подтверждения, а не модальных диалогов. Хотя подавляющее большинство диалогов подтверждения являются модальными, это не означает, что оба термина являются синонимами.
Модальный диалог - это диалог, который переводит программу в определенный режим и не позволяет вам делать что-либо, что не соответствует этому режиму, пока оно открыто. В наиболее распространенной реализации это означает, что вы не можете получить доступ ни к каким другим окнам.
Это зло
Рассмотрим приложение адресной книги. Предположим, у вас есть существующий человек в адресной книге, и вы хотите добавить его соседа по комнате.
- Если диалоговое окно "Добавить человека" не является модальным, вы можете переключаться между старой и новой записями, копируя и вставляя ваши данные.
- Если диалоговое окно "добавить человека" является модальным, вы не можете ничего сделать со старой записью, пока открыто диалоговое окно добавления. Вы можете выбрать что-то для копирования, прежде чем выбрать "добавить", но только одна вещь. Все остальное нужно перепечатывать вручную.
В редких случаях вы сталкиваетесь с чем-то, что действительно должно быть выполнено за одно целое, не позволяя пользователю отклоняться от этой задачи до ее завершения. Модальные диалоги подходят для таких случаев. Но эти случаи очень редки! Который является в основном точкой другого потока, на который ссылается этот вопрос.
Люди их не читают, и это хорошо. Вы хотите, чтобы люди формировали привычки вокруг вашего пользовательского интерфейса, но наличие важного выбора во всплывающем окне просто заставит пользователя нажать ОК.
Они прерывают пользователя, они мешают пользователю делать другие вещи.
Что если вы хотите скопировать и вставить что-то из главного окна? Что если вы хотите скопировать сообщение в модальном диалоге? Что если тебе все равно.
Просто сравните диалог поиска IE с Firefox
Сравните IE "Вы хотите, чтобы мы запомнили этот пароль для вас?" в Firefox
Лучшие интерфейсы модальные. Как худшие.
Модальный пользовательский интерфейс - независимо от того, построен ли он из диалоговых окон, кнопок панели инструментов или текстовых подсказок - желателен только при условии, что каждый режим соответствует ожиданиям перехода пользователя на него. Когда программа неожиданно переходит в режим... или режим требует, чтобы пользователь обладал информацией, которой у него нет в распоряжении... тогда это вызовет у пользователя трудности, либо заставит его вернуться в предыдущий режим, либо угадать правильное действие с потенциально нежелательными результатами.
Немодальный пользовательский интерфейс - это полный набор инструментов. Некоторые имеют отношение к работе под рукой, некоторые нет. Пользователь должен обладать достаточными навыками как для выбора правильных инструментов, так и для их правильного применения. Хотя немодальный пользовательский интерфейс, следовательно, никогда не может быть таким оптимальным, как хороший модальный пользовательский интерфейс (подходящий инструмент для текущей задачи, уже выполняемой), он также никогда не может быть настолько неоптимальным, как плохой модальный пользовательский интерфейс (неправильный инструмент для текущая задача врезается в твои неосторожные пальцы).
Разработка хорошего модального пользовательского интерфейса может быть чрезвычайно сложной задачей для нетривиальных приложений, особенно для программ общего назначения, предназначенных для использования широким кругом пользователей в еще более широком диапазоне целей. Системы меню и диалоговые окна пытаются преодолеть разрыв, позволяя создавать небольшие модальные разделы для конкретных задач в более крупном, немодальном приложении. Однако ни один из них не особенно хорошо масштабируется, а неправильное использование и чрезмерное использование оставляют им плохую репутацию, которую часто считают первым прибежищем ленивого программиста. В частности, диалоговые окна часто используются скорее как средство принуждения пользователей к представлению программиста (или дизайнера) о том, как следует использовать приложение, или к принятию сложных проектных решений и хитрой обработке ошибок у пользователя, а не к их одноименной цели: коммуникации.
Действительно, появление веб-приложений привело к появлению таких тенденций на многочисленных форумах, в группах новостей и на сайтах вопросов и ответов, таких как этот, поскольку программисты привыкли писать ультралинейную логику, которая запрашивает ввод данных, когда программа нужна, а не когда доступны для пользователя... вынуждены в систему, где пользователи могут перемещаться нелинейно, и могут вполне рассматривать любую попытку ограничить эту свободу как странное раздражение, которое должно быть подорвано, а не необходимое зло. Жалкие вопли этих бедных кодеров эхом разносятся по сети, поскольку их попытки навязать это грубое модальное поведение немодальной системе терпят крах вокруг них. Для тех из нас, кто долго страдал под жестокими "диалогами", это действительно прекрасная мелодия.
Прежде чем прочитать мой ответ, вы должны внимательно прочитать следующее сообщение. Все процессы, подпроцессы, задачи и потоки приостановлены на неопределенный срок в ожидании вашего ответа. И, как только вы полностью поймете сообщение и, возможно, согласитесь на какие-то юридические вопросы и все последствия всего этого, тогда и только тогда вы сможете продолжить.
В приложениях потребительского стиля они более или менее бесполезны; пользователи не читают их, учатся отклонять их, и, когда они действительно их читают, обычно оказываются в замешательстве. Я думаю, что диалог Да / Нет / Отмена - это просто ленивый дизайн пользовательского интерфейса. Диалог "кнопки говорят, что они делают" немного лучше, потому что пользователю не нужно много читать.
При этом: в критически важных для данных приложениях интрасети /"предприятия" они более или менее необходимы для подтверждения деструктивных действий или проверки правильности нестандартных рабочих процессов, которые могут быть разрешены, но не рекомендованы.
Поэтому я не думаю, что они концептуально "злые", но чаще всего это результат плохого дизайна пользовательского интерфейса.
Они злые, потому что они нарушают основной принцип, согласно которому пользователь должен иметь возможность управлять действиями программного обеспечения. Модальные диалоги (злая форма диалоговых окон в целом) ограничивают пользователя только одним действием.
Некоторые ответы, кажется, неправильно понимают, что это любое всплывающее окно, которое запрашивает, например, подтверждение пользователя. Это может быть выполнено без привязки всего приложения или компьютера; это поведение, против которого люди возражают.
В некоторых средах модальные диалоги ограничивают пользователя только в контексте одного приложения (или, возможно, меньше). Действительно плохие модальные диалоги не позволяют пользователю делать что-либо еще во всей операционной системе (скажем, Windows).
Одна из причин, по которой они мне не нравятся, заключается в том, что они показывают информацию последовательно (по одной партии за раз), а не параллельно (всю информацию, которую нужно видеть сразу), параллель позволит пользователю выбирать на что они хотят посмотреть, где, как в сериале, вы заставляете их выбирать опцию.
Плюс также тот факт, что они нарушают поток контроля пользователей (например, крадут фокус у объекта, над которым вы работаете), что я действительно не люблю делать. Таким образом, в результате пользователь просто нажмет OK, чтобы вернуться к тому, что он делал, и проигнорирует информацию в диалоговом окне.
Имейте в виду, что вы все еще нуждаетесь в них в некоторых случаях.
Нобой читает их, и они прерывают ход программы. Часто при использовании в качестве уведомления об ошибках они являются предвестником сбоя программы. К тому времени, когда пользователь понимает, что происходит, сообщение исчезает, и ему остается вспомнить или изобрести сообщение как можно лучше.
Я не помню, где я впервые увидел это, но лучший подход к модальному диалогу - это возможность легко находить и использовать возможность "отменить". Windows Explorer фактически делает и то, и другое при удалении файла. Он запрашивает подтверждение (модальное диалоговое окно), после чего сразу после удаления файла в меню "Правка" появляется опция "Отменить удаление". конечно, просто простой способ доступа к корзине, но в этом случае Microsoft действительно могла бы просто покончить с этим диалогом.
Суть в том, что вы часто можете обойтись без диалога, немного подумав и, возможно, добавив немного кода, но это слишком простой вариант для ленивого или, возможно, более щедрого, ограниченного по времени разработчика.
Тем не менее, иногда вы действительно хотите диалог. Подумайте обо всех опциях в типичном диалоге печати. Какой принтер? Все страницы или только несколько? Сколько копий? Я не знаю, как бы вы сделали это без диалогового окна...
Лично я думаю, что это полностью зависит от того, как это делается.
Попробуйте скопировать 10 файлов, где каждый файл существует в целевом каталоге, сделайте это с помощью проводника Windows.
Является ли один модальный диалог для каждого файла действительно правильным ответом в такой операции. Я знаю, что у вас есть "Да для всех", но вся система циклов должна была быть построена иначе. Он должен был собрать все существующие файлы в один большой список и один раз спросить "Что вы хотите сделать с этими файлами", а затем разрешить мне решить для каждого файла в списке, что делать, прежде чем нажать "ОК" и возобновить операцию.,
И часто диалоговые окна просто прерывают нормальный рабочий процесс.
И да, люди не читают диалоговые окна. Так что золотой совет, если вы должны использовать диалоговое окно, это перефразировать его.
Вместо "Вы хотите удалить эту строку в базе данных?", Попробуйте сформулировать ее так, чтобы вы спрашивали (но это не правильно сформулировано) "Вы не хотите удалить эту строку в базе данных?" Таким образом, если они просто нажмут кнопку "Да", что является типичным ответом пользователя, который просто хочет продолжить, они в конечном итоге ничего не сделают.