HTML DOM의 Menu 객체는 HTML 문서 내의 <menu> 요소를 나타냅니다. 이 요소는 주로 마우스 오른쪽 버튼을 클릭했을 때 나타나는 컨텍스트 메뉴(context menu)를 정의하는 데 사용됩니다.
참고 − <menu> 요소는 Mozilla Firefox 브라우저에서만 지원됩니다. 따라서 크로스 브라우저 호환성이 중요한 프로젝트에서는 사용에 주의해야 합니다.
문법(Syntax)
기본 문법은 다음과 같습니다 −
<menu> 요소 생성하기:
var menuObject = document.createElement(“MENU”)
이렇게 생성된 menuObject는 일반적인 DOM 요소와 마찬가지로 속성을 설정하거나 자식 노드(<menuitem> 등)를 추가할 수 있습니다.
예제
HTML DOM Menu 요소의 실제 사용 예제를 살펴보겠습니다. 아래 예제는 폼(form)에 컨텍스트 메뉴를 연결한 뒤, 메뉴 항목을 클릭하면 현재 페이지의 URL과 호스트명을 화면에 표시합니다 −
<!DOCTYPE html>
<html>
<head>
<title>Menu Object</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
}
input[type="button"] {
border-radius: 10px;
}
</style>
</head>
<body>
<form contextmenu="MENU">
<fieldset>
<legend>Menu-Object</legend>
<label for="urlSelect">Current URL:</label>
<input type="url" size="30" id="urlSelect" value="https://www.example.com/aboutUs">
<div id="divDisplay"></div>
</fieldset>
<menu type="context"
id="MENU">
<menuitem label="Get URL"
onclick="contextFunction(1);">
</menuitem>
<menuitem label="Get Hostname"
onclick="contextFunction(2);">
</menuitem>
</menu>
</form>
<script>
var divDisplay = document.getElementById("divDisplay");
var urlSelect = document.getElementById("urlSelect");
function gethref(){
divDisplay.textContent = 'URL Path: '+location.href;
}
function getHostname(){
divDisplay.textContent = 'Hostname: '+location.hostname;
}
function contextFunction(role){
if(role === 1)
this.gethref();
else
this.getHostname();
}
</script>
</body>
</html>
출력 결과
위 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다 −
폼 위에서 마우스 오른쪽 버튼을 클릭한 경우 −

컨텍스트 메뉴에서 'Get URL' 메뉴 항목을 클릭한 경우 −

컨텍스트 메뉴에서 'Get Hostname' 메뉴 항목을 클릭한 경우 −

이 예제의 동작 원리를 정리하면 다음과 같습니다. 먼저 폼의 contextmenu 속성이 <menu> 요소의 id 값과 연결되어, 해당 폼 위에서 마우스 오른쪽 버튼을 클릭하면 사용자 정의 컨텍스트 메뉴가 나타납니다. 그리고 각 <menuitem>에 등록된 onclick 이벤트 핸들러가 contextFunction()을 호출하여, 전체 URL(location.href) 또는 호스트명(location.hostname)을 div 영역에 출력합니다.