우리가 사용하는 웹 사이트나 웹 애플리케이션에서는 수많은 이벤트가 발생합니다. 사용자가 마우스나 키보드로 일으킬 수 있는 이벤트도 있고, 브라우저 스스로도 웹페이지를 로딩하면서 여러 이벤트를 발생시킵니다. 이번 포스팅에서는 이렇게 웹에서 다양한 이유로 발생하는 이벤트를 처리하는 여러가지 방법에 대해서 알아보겠습니다. 먼저 가장 고전적이지만 사용하기 간단한 방법부터 알아볼까요? HTML 요소(element)에서 발생하는 이벤트를 처리하는 가장 쉬운 방법은 HTML의 이벤트 속성을 활용하는 것입니다. 예를 들어, 다음 다른 예로, 다음
여기서 자바스크립트 코드에 사용된 이처럼 HTML 이벤트 속성은 간단한 코드를 실행하기에는 매우 간편하지만 이벤트 발생 시에 실행할 로직이 복잡한 경우에는 그닥 추천되지는 않습니다. 그리고 순수하게 HTML 기반인 이 방법에는 한가지 큰 제약 사항이 있는데 바로 이벤트 핸들러를 한 번 설정하면 제거하는 것이 어렵습니다. 다시말해, 이벤트 핸들러를 제거하려면 다음에 소개드릴 자바스크립트의 도움이 필요하게 됩니다. JavaScript 이벤트 속성HTML 요소에서 발생하는 이벤트를 처리하는 두 번째 방법은 자바스크립트의 DOM 노드의 이벤트 속성을 활용하는 것입니다. 우선 위에서 작성한 HTML 코드에서 이벤트 속성을 모두 제거하겠습니다. 그 다음, 자바스크립트로
이벤트가 발생한 요소에 접근할 때는
이번에는 코드가 좀 더 깔끔해 보이도록
이벤트 핸들러로 람다 함수를 사용할 때 주의할 점은 더 이상 이벤트 핸들러를 제거할 때는 선택한 HTML 요소의 이벤트 속성을 JavaScript 이벤트 함수마지막으로 소개해드릴 방법은 자바스크립트의 DOM 노드를 대상으로
따라서 위에서
물론 람다 함수로 이벤트 핸들러를 넘길 수도 있으며, 마찬가지로 이
때는
예를 들어,
이제,
이벤트 핸들러를 제거할 때는
마치면서지금까지 웹페이지에서 발생하는 이벤트를 처리하는 대표적인 3가지 방법에 대해서 살펴보았습니다. 각 방법의 장단점을 간단하게 정리해보면,
개인적으로는 저는 가장 강력한 마지막 방법을 추천드리고 싶지만 첫번째나 두번째 방법도 잘 숙지해두시면 기존에 작성된 코드를 읽을 때 도움이 되실 겁니다. 이벤트 처리는 어떤 프레임워크로 웹 개발을 하든 반드시 알아야 할 부분이오니 이번 기회에 잘 정리해두셨으면 좋겠습니다. |