Модальное окно
Мода́льное окно́ в графическом интерфейсе пользователя — окно, которое блокирует работу пользователя с родительским приложением до тех пор, пока пользователь это окно не закроет. Модальными преимущественно реализованы диалоговые окна. Также модальные окна часто используются для привлечения внимания пользователя к важному событию или критической ситуации[1].
Назначение
Как правило, модальные окна применяются, когда требуется:
- Потребовать от пользователя ввод какой-либо информации — начиная от простого «да/нет» до большого количества настроек или данных, необходимых для продолжения работы с родительским окном или приложением;
- Привлечь внимание пользователя к чему-либо важному. Этот вариант часто критикуется специалистами по эргономике, потому что редко это важно настолько, чтобы блокировать работу приложения целиком, но тем не менее продолжает использоваться по той причине, что он существенно более лёгок в реализации[2][3][4];
- Указать пользователю на невозможность отмены выполняемого им действия и потребовать подтверждения этого действия. Этот вариант тоже критикуется, вместо него рекомендуется обеспечить возможность отмены[5].
Критика
Модальное окно полностью блокирует весь рабочий процесс до тех пор, пока не будет закрыто. Пользователь может не понять, что окно требует его внимания, одновременно не понимая, почему главное окно программы не реагирует на его действия.
Поскольку создание модальных окон является неотъемлемой возможностью любой среды по разработке графического интерфейса, эти окна продолжают использоваться на практике. Сторонники использования этой техники также считают, что большое количество диалоговых окон, между которыми можно свободно переключаться, может запутать пользователя, а значит, лучше сократить возможности ввода до предела в каждый конкретный момент времени.
Специалисты по эргономике, напротив, считают, что в подавляющем большинстве ситуаций ограничение свободы действий пользователя и строгая последовательность этих действий приводит к существенному уменьшению удобства и расстраивает пользователей[6]. Использование модальных окон заставляет пользователя концентрировать своё внимание на каком-то одном аспекте задачи, тогда как на практике он может одновременно работать с большими объёмами информации, размещёнными в различных окнах приложения и постоянно переключаться между ними. В таких случаях использование модальных окон ведет к уменьшению эффективности работы.
Создание окна, модального относительно рабочего стола, могло нарушить доступность всей системы в целом. Например, такая функция была предусмотрена в Microsoft Windows 3.x, 95 и 98, однако была убрана из NT и последующих версий, и модальность окна относительно системы больше не блокировала доступ к ней[7].
Во всех ОС Microsoft Windows открытое модальное окно полностью блокирует взаимодействие с родительским окном, в том числе не позволяя изменить его размеры, переместить в другое место на экране или свернуть. В некоторых случаях из-за недоработок программного обеспечения, модальные окна при переключении задач могут оказаться позади родительского окна, из-за чего какое-либо взаимодействие с программой становится невозможным.
При большом количестве открытых приложений становится сложно определить родительское окно, особенно если в заголовке модального окна недостаточно информации для этого (например, открыто несколько одинаковых приложений). Для этого приходится делать попытки взаимодействия со всеми окнами, пока не найдётся заблокированное.
Модальные окна в OS X
В OS X для преодоления некоторых недостатков была разработана особая концепция модальных окон[8]. В отличие от обычных модальных окон, модальные окна OS X являются частью родительского окна. В OS X модальные окна появляются из-под заголовка родительского окна и привязаны к нему, что позволяет избежать путаницы с определением родительского окна. При этом модальное окно не мешает перемещать родительское окно, а также изменять его размеры.
Примечания
- Quince UX patterns explorer. Modal Panel (англ.) (недоступная ссылка). Архивировано 27 февраля 2010 года.
- Joel Spolsky, User Interface Design for Programmers: Designing for People Who Have Better Things To Do With Their Lives (перевод на русский Архивная копия от 5 декабря 2010 на Wayback Machine)
- Raymond Chen, The Old New Thing: The default answer to every dialog box is «Cancel» (перевод на русский)
- Jeff Atwood, Coding Horror: Teaching Users to Read
- Aza Raskin, A List Apart: Never Use a Warning When you Mean Undo (перевод на русский Архивная копия от 10 сентября 2011 на Wayback Machine)
- Cooper, Alan. About Face 2.0: The Essentials of Interaction Design (англ.). — Wiley, 2003. — ISBN 0764526413.
- How To Create a System-Modal Program/Window in Visual Basic // Microsoft Support
- Dialogs — OS X Human Interface Guidelines