# Взаимодействие с пользователем: alert, prompt, confirm В этом разделе мы рассмотрим базовые UI операции: `alert`, `prompt` и `confirm`, которые позволяют работать с данными, полученными от пользователя. [cut] ## alert Синтаксис: ```js alert(сообщение) ``` `alert` выводит на экран окно с сообщением и приостанавливает выполнение скрипта, пока пользователь не нажмет "ОК". ```js //+ run alert("Привет"); ``` Окно сообщения, которое выводится, является *модальным окном*. Слово "модальное" означает, что посетитель не может взаимодействовать со страницей, нажимать другие кнопки и т.п., пока не разберется с окном. В данном случае - пока не нажмет на "OK". ## prompt Функция prompt принимает два аргумента: ```js result = prompt(title, default); ``` Она выводит модальное окно с заголовком `title`, полем для ввода текста, заполненным строкой по умолчанию `default` и кнопками OK/CANCEL. Пользователь должен либо что-то ввести и нажать OK, либо отменить ввод кликом на CANCEL или нажатием [key Esc] на клавиатуре. **Вызов `prompt` возвращает то, что ввел посетитель -- строку или специальное значение `null`, если ввод отменен.** [warn header="Safari 5.1+ не возвращает `null`"] Единственный браузер, который не возвращает `null` при отмене ввода -- это Safari. При отсутствии ввода он возвращает пустую строку. Предположительно, это ошибка в браузере. Если нам важен этот браузер, то пустую строку нужно обрабатывать точно так же, как и `null`, т.е. считать отменой ввода. [/warn] Как и в случае с `alert`, окно `prompt` модальное. ```js //+ run var years = prompt('Сколько вам лет?', 100); alert('Вам ' + years + ' лет!') ``` [warn header="Всегда указывайте `default`"] Вообще, второй `default` может отсутствовать. Однако при этом IE вставит в диалог значение по умолчанию `"undefined"`. Запустите этот код в IE, чтобы понять о чем речь: ```js //+ run var test = prompt("Тест"); ``` Поэтому рекомендуется *всегда* указывать второй аргумент: ```js //+ run var test = prompt("Тест", ''); // <-- так лучше ``` [/warn] ## confirm Синтаксис: ```js result = confirm(question); ``` `confirm` выводит окно с вопросом `question` с двумя кнопками: OK и CANCEL. **Результатом будет `true` при нажатии OK и `false` - при CANCEL([key Esc]).** Например: ```js //+ run var isAdmin = confirm("Вы - администратор?"); alert(isAdmin); ``` ## Особенности встроенных функций Конкретное место, где выводится модальное окно с вопросом -- обычно это центр браузера, и внешний вид окна выбирает браузер. Разработчик не может на это влиять. С одной стороны -- это недостаток, так как нельзя вывести окно в своем, особо красивом, дизайне. С другой стороны, преимущество этих функций по сравнению с другими, более сложными методами взаимодействия, которые мы изучим в дальнейшем -- как раз в том, что они очень просты. Это самый простой способ вывести сообщение или получить информацию от посетителя. Поэтому их используют в тех случаях, когда простота важна, а всякие "красивости" особой роли не играют. ## Резюме