[Javascript] 이벤트 핸들러 등록 여부 확인하기
2025. 6. 11. 09:00ㆍJavascript/Javascript
728x90
반응형

버튼을 클릭하거나 키보드로 입력하는 등 사용자 이벤트에 따라 addEventListener를 동적으로 추가하는 로직을 작성하는 경우 중복된 바인딩으로 이벤트 콜백이 여러 번 발생될 수 있다.
이럴 때에는 조건문으로 해당 요소에 특정 이벤트 바인딩이 되어 있는지 확인하고 분기할 필요가 있는데 여기에 관련된 구글링을 좀 해보면 getEventListeners()라는 API가 나온다. 하지만 이는 크롬 개발자도구의 콘솔창용 API지 자바스크립트 표준 함수가 아니기 때문에 스크립트에서 사용할 수 없다.
결론부터 말하자면 현재 자바스크립트 진영에서 직접적으로 이벤트 바인딩을 검사하는 API는 지원되지 않는다. 따라서 다른 방법으로 우회하는 로직을 짜야 하는데, 대표적으로 요소에 class를 부여해서 해당 class가 없으면 이벤트 바인딩을 하고 있으면 안 하는 방식이 있다.
const registerEvent = function() {
// 만약 textarea라는 요소에 once1이라는 클래스가 있으면 return
if ($textarea.classList.contains('once1')) return;
// 클래스 추가
$textarea.classList.add('once1');
// 이벤트 핸들러 등록
$textarea.addEventListener('drop', handleDrop);
$textarea.addEventListener('paste', handlePaste);
}
728x90
반응형
'Javascript > Javascript' 카테고리의 다른 글
[Javascript] reduce()에 break 걸기 (0) | 2025.06.13 |
---|---|
[Javascript] 조건문 최적화하기 (2) | 2025.06.12 |
[Javascript] 객체: 메서드와 this (1) | 2025.06.11 |
[Javascript] 전역 객체(Global Object) (0) | 2025.06.10 |
[Javascript] 객체의 종류 (1) | 2025.06.09 |