[모던 JavaScript 튜토리얼] alert, prompt, confirm을 이용한 상호작용

모던 JavaScript 튜토리얼을 읽고 정리한 글입니다.

Preview

브라우저는 사용자와 상호작용할 수 있는 3가지 함수를 제공한다.

  • alert: 메시지를 보여준다.
  • prompt: 사용자에게 텍스트를 입력하는 메시지를 띄우고 입력 필드를 함께 제공한다. 확인을 누르면 사용자가 입력한 문자열을 반환하고, 취소/Esc를 누르면 null을 반환한다.
  • confirm: 사용자가 확인/취소 버튼을 누를 때까지 메시지가 창에 보여진다. 확인을 누르면 true를, 취소/Esc를 누르면 false를 반환한다.

alert, prompt, confirm을 이용한 상호작용

브라우저 환경에서 사용되는 사용자 인터페이스 기능인 alert, prompt, confirm

💭  alert

alert 함수가 실행되면 사용자가 확인(OK) 버튼을 누를 때까지 메시지를 보여주는 창이 계속 떠있게 된다.

alert("Hello");

메시지가 있는 작은 창은 모달 창(modal window)이라고 부른다. ‘모달’이라는 단어에는 페이지의 나머지 부분과 상호 작용이 불가능하다는 의미가 내포되어 있다.

💬  prompt

브라우저에서 제공하는 prompt 함수는 두 개의 인수를 받는다. 함수가 실행되면 텍스트 메시지와 입력 필드, 확인 및 취소 버튼이 있는 모달 창을 띄워준다.

result = prompt(title, [default]);
  • title: 사용자에게 보여줄 문자열
  • default: 입력 필드의 초깃값(선택값)

default를 감싸는 대괄호는 매개변수가 필수가 아닌 선택값임을 의미한다.

사용자는 프롬프트 대화상자의 입력 필드에 원하는 값을 입력하고 확인을 누를 수 있다. 값을 입력하지 않는 경우 취소 버튼이나 Esc를 눌러 대화상자를 빠져나가면 된다.

prompt 함수는 사용자가 입력 필드에 입력한 문자열을 반환한다. 사용자가 입력을 취소한 경우 null이 반환된다.

let age = prompt('나이를 입력해주세요.', 100);
alert(`당신의 나이는 ${age}살 입니다.`); // 당신의 나이는 100살입니다.

⚠️ IE(Internet Explorer)에서는 항상 기본값을 넣어야 한다. 두 번째 매개변수가 없는 경우 undefined를 입력 필드에 띄운다. IE 사용자를 비롯한 모든 사용자에게 깔끔한 프롬프트를 보여주려면 두 번째 매개변수를 항상 전달하자.

let test = prompt("Test", ''); // <-- IE 사용자를 위한 매개변수 처리

✔️  컨펌 대화상자

result = confirm(question);

confirm 함수는 매개변수로 받은 것(e.g. question)과 확인/취소 버튼이 있는 모달 창을 보여준다. 사용자가 확인 버튼을 누르면 true, 그 외의 경우는 false를 반환한다.

let isBoss = confirm("당신이 주인인가요?");
alert( isBoss ); // 확인 버튼을 눌렀다면 true가 출력된다.

세 함수는 모두 모달 창을 띄워주고 창이 떠 있는 동안은 스크립트 실행이 일시중단된다. 사용자가 창을 닫기 전까진 나머지 페이지와 상호작용이 불가능하다.

세 함수의 2가지 제약사항

  1. 모달 창의 위치는 브라우저가 결정하는데, 보통 브라우저 중앙에 위치한다.
  2. 모달 창의 모양은 브라우저마다 다르다. 개발자는 창의 모양을 수정할 수 없다.