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

HTML DOM cancelable 이벤트 속성 완벽 정리 – 개념부터 예제까지

HTML DOM의 cancelable(취소 가능) 이벤트 속성은 JavaScript가 반응할 수 있는 HTML 이벤트와 연관된 속성입니다. 이 속성은 해당 이벤트가 취소될 수 있는지 여부를 나타내는 불리언(Boolean) 값, 즉 true 또는 false를 반환합니다.

반환값이 true라면 preventDefault() 메서드를 통해 이벤트의 기본 동작을 막을 수 있고, false라면 기본 동작을 취소할 수 없습니다.

구문(Syntax)

cancelable 이벤트 속성의 구문은 다음과 같습니다.

event.cancelable

예제(Example)

cancelable 이벤트 속성의 실제 사용 예제를 살펴보겠습니다.

<!DOCTYPE html>
<html>
<body>
<p>아래 버튼 위에 마우스를 올려 onmouseover 이벤트가 취소 가능한지 확인해 보세요</p>
<button onmouseover="cancelFunction(event)">CLICK IT</button>
<p id="Sample"></p>
<script>
    function cancelFunction(event) {
        var x = event.cancelable;
        if(x==true)
            document.getElementById("Sample").innerHTML = "onmouseover 이벤트는 취소 가능합니다";
        else
            document.getElementById("Sample").innerHTML = "onmouseover 이벤트는 취소할 수 없습니다";
    }
</script>
</body>
</html>

실행 결과(Output)

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

HTML DOM cancelable 이벤트 속성 완벽 정리 – 개념부터 예제까지

CLICK IT 버튼 위에 마우스를 올리면 아래와 같이 결과가 표시됩니다.

HTML DOM cancelable 이벤트 속성 완벽 정리 – 개념부터 예제까지

코드 설명

먼저 CLICK IT 버튼을 생성하고, 버튼 위에 마우스를 올리면 onmouseover 이벤트 객체가 cancelFunction(event) 메서드로 전달되도록 구현했습니다.

<button onmouseover="cancelFunction(event)">CLICK IT</button>

cancelFunction(event) 메서드는 전달받은 이벤트 객체의 event.cancelable 값을 확인하여 변수 x에 할당합니다. 이후 조건문을 통해 반환값이 true인지 false인지 판별하고, 그 결과에 따라 적절한 메시지를 id가 “Sample”인 <p> 태그에 출력합니다.

function cancelFunction(event) {
    var x = event.cancelable;
    if(x==true)
        document.getElementById("Sample").innerHTML = "onmouseover 이벤트는 취소 가능합니다";
    else
        document.getElementById("Sample").innerHTML = "onmouseover 이벤트는 취소할 수 없습니다";
}

참고: cancelable과 preventDefault()의 관계

cancelable 속성은 단독으로 사용되기보다 preventDefault() 메서드와 함께 활용되는 경우가 많습니다. 예를 들어 폼 제출(submit) 이벤트나 마우스 휠(wheel) 이벤트처럼 취소 가능한 이벤트에서는 preventDefault()를 호출해 브라우저의 기본 동작을 차단할 수 있습니다.

반대로 load, unload, scroll 등 일부 이벤트는 취소가 불가능하므로, preventDefault()를 호출해도 기본 동작이 그대로 실행됩니다. 따라서 이벤트 핸들러 작성 시 event.cancelable 값을 먼저 확인하면 불필요한 오류를 방지하고 더 안정적인 코드를 작성할 수 있습니다.