Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML DOM Dialog(대화 상자) 객체 완벽 가이드

HTML DOM의 Dialog 객체는 HTML5에서 새롭게 도입된 <dialog> 요소와 연관된 객체입니다. 이 객체를 활용하면 웹 페이지에서 팝업창이나 모달(Modal) 창을 손쉽게 만들 수 있습니다. 다만, 사용자가 대화 상자를 실제로 보고 상호작용하려면 open 속성 값이 반드시 설정되어 있어야 합니다.

Dialog 객체의 주요 속성(Properties)

Dialog 객체에서 제공하는 속성은 다음과 같습니다.

속성설명
open대화 상자를 열지(open) 닫을지(closed) 여부를 설정하거나 현재 상태를 반환합니다.
returnValue대화 상자의 반환값(return value)을 설정하거나 반환합니다.

Dialog 객체의 주요 메서드(Methods)

Dialog 객체에서 제공하는 메서드는 다음과 같습니다.

메서드설명
close()열려 있는 대화 상자를 닫습니다.
show()대화 상자를 화면에 표시합니다.
showModal()대화 상자를 최상위 레이어로 만들어 모달 형태로 표시합니다.

문법(Syntax)

JavaScript로 대화 상자 객체를 생성하는 기본 문법은 다음과 같습니다.

var p = document.createElement("DIALOG");

예제(Example)

HTML DOM Dialog 객체를 활용한 실제 예제를 살펴보겠습니다.

<!DOCTYPE html>
<html>
<head>
<title>DIALOG OBJECT</title>
<style>
    dialog{
        border:2px solid blue;
        font-weight:bold;
    }
</style>
</head>
<body>
<p> 아래 버튼을 클릭하면 dialog 요소가 생성됩니다 </p>
<button onclick="createDialog()">CREATE</button>
<script>
    function createDialog() {
        var dlg = document.createElement("DIALOG");
        var dlgTxt = document.createTextNode("DIALOG WINDOW with a button");
        var bl=document.createElement("BR");
        var btn = document.createElement("BUTTON");
        var btnText=document.createTextNode("CLICK HERE");
        dlg.setAttribute("open", "open");
        dlg.appendChild(dlgTxt);
        dlg.appendChild(bl);
        btn.appendChild(btnText);
        dlg.appendChild(btn);
        document.body.appendChild(dlg);
    }
</script>
</body>
</html>

실행 결과(Output)

위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

HTML DOM Dialog(대화 상자) 객체 완벽 가이드

CREATE 버튼을 클릭한 후의 결과입니다.

HTML DOM Dialog(대화 상자) 객체 완벽 가이드

예제 코드 분석

위 예제의 동작 원리를 단계별로 살펴보겠습니다.

1. 버튼 생성 및 이벤트 연결

먼저 사용자가 클릭하면 createDialog() 함수를 실행하는 CREATE 버튼을 만듭니다.

<button onclick="createDialog()">CREATE</button>

2. dialog 요소와 내부 콘텐츠 생성

createDialog() 함수는 createElement() 메서드를 사용해 <dialog> 요소를 동적으로 생성합니다. 이후 createTextNode() 메서드로 대화 상자 안에 표시될 텍스트 노드를 추가하고, 같은 방식으로 <dialog> 요소 내부에 버튼과 버튼 텍스트를 생성합니다.

3. open 속성 설정 및 문서에 추가

setAttribute() 메서드를 통해 대화 상자의 open 속성 값을 설정하여 화면에 표시되도록 합니다. 마지막으로 document.body의 appendChild() 메서드에 <dialog> 요소를 매개변수로 전달하여, 버튼이 포함된 대화 상자 전체를 문서 본문(body)에 추가합니다.

function createDialog() {
    var dlg = document.createElement("DIALOG");
    var dlgTxt = document.createTextNode("DIALOG WINDOW with a button");
    var bl=document.createElement("BR");
    var btn = document.createElement("BUTTON");
    var btnText=document.createTextNode("CLICK HERE");
    dlg.setAttribute("open", "open");
    dlg.appendChild(dlgTxt);
    dlg.appendChild(bl);
    btn.appendChild(btnText);
    dlg.appendChild(btn);
    document.body.appendChild(dlg);
}

이처럼 HTML DOM의 Dialog 객체를 활용하면 별도의 라이브러리 없이 순수 JavaScript만으로 팝업과 모달 창을 구현할 수 있습니다. 특히 showModal() 메서드를 사용하면 배경과 상호작용이 차단되는 진정한 의미의 모달 대화 상자를 간편하게 만들 수 있다는 점이 큰 장점입니다.