preventDefault()로 브라우저 기본 컨텍스트 메뉴를 막고 그 자리에 커스텀 메뉴를 그립니다. 메뉴 자체의 마크업은 드롭다운 메뉴와 똑같이 role="menu"/role="menuitem"이고 방향키·Enter도 동일하게 동작합니다.
드롭다운 메뉴와 다른 점은 여는 방법과 위치입니다. 드롭다운 메뉴는 화면에 고정된 트리거 버튼을 클릭해 그 버튼 아래에 열리고 내용도 항상 같지만, 컨텍스트 메뉴는 마우스 오른쪽 버튼으로 커서가 있던 자리에 열리고 무엇을 우클릭했느냐에 따라 항목 구성이 달라질 수 있습니다. 터치 기기의 길게 누르기 변형은 mobile 카테고리의 "롱 프레스 컨텍스트 메뉴" 항목에서 따로 다룹니다.
우클릭은 마우스 전용 동작이라 키보드만 쓰는 사용자를 위해 Shift+F10이나 메뉴 키로도 열리게 하거나, 화면에 "⋯" 같은 보조 트리거 버튼을 함께 둬야 합니다.