자바스크립트 이벤트 - Element 기본 동작 막기




엘리먼트의 기본 동작 막기:


몇몇 이벤트들은 해당 엘리먼트가 가지고 있는 기본 동작을 자동으로 실행 시키게 됩니다.

예를 들어 앵커(<a>) 엘리먼트의 click 이벤트는 엘리먼트의 href 속성에 할당된 값을 브라우저에 실행(페이지 이동)시키며, form 엘리먼트의 submit 이벤트는 호출 시 폼을 전송(제출)하기 위한 엘리먼트의 기본 동작을 수행합니다.


또한, 엘리먼트의 기본동작을 막는 방법에는 할당된 이벤트 핸들러의 반환 값을 false로 받는 방법과 아래 예제와 같이 해당 이벤트의 속성 및 메서드를 활용한 방법이 존재합니다.


  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> New Document </TITLE>
  5. <META NAME="Generator" CONTENT="EditPlus">
  6. <META NAME="Author" CONTENT="">
  7. <META NAME="Keywords" CONTENT="">
  8. <META NAME="Description" CONTENT="">
  9. <script>
  10.  
  11. // 기본 이벤트를 막지 않은 경우
  12. function msg(obj, msg, e){
  13.    
  14.     e = window.event || e;
  15.     alert(obj.nodeName);
  16.  
  17. };
  18.  
  19. // 이벤트 핸들러의 반환값을 false 받아 기본 동작을 막는 방법
  20. function msg1(obj, msg, e){
  21.    
  22.     e = window.event || e;
  23.     alert(obj.nodeName);
  24.  
  25.     return false;
  26. };
  27.  
  28.  
  29. // 해당 이벤트의 속성 및 메서드를 활용하여 기본 동작을 막는 방법
  30. function msg2(obj, msg, e){
  31.    
  32.     e = window.event || e;
  33.     alert(obj.nodeName);
  34.    
  35.     stopDefault(e);
  36. };
  37.  
  38. // 엘리먼트의 기본 동작 막기
  39. function stopDefault(e)
  40. {
  41.     if (window.event) e.returnValue = false;
  42.     else if (e.preventDefault) e.preventDefault();
  43. };
  44.  
  45. </script>
  46.  
  47.  
  48. </HEAD>
  49. <BODY>
  50. <!-- mouseover 이벤트 타입은 click 이벤트 타입과 달리 해당 엘리먼트의 기본동작이 일어나지 않는다. -->
  51. <a href="http://naver.com" onmouseover="msg(this, 'test');">mouseover(기본 동작이 일어나지 않는 이벤트 타입에 할당)</a><br /><br />
  52. <!-- click 이벤트 타입은 기본 동작이 일어난다. -->
  53. <a href="http://naver.com" onclick="msg(this, 'test');">click(기본 동작이 일어난다.)</a><br /><br />
  54. <a href="http://naver.com" onclick="return msg1(this, 'test');">click(핸들러의 false 반환값으로 기본동작 막기)</a><br /><br />
  55. <a href="http://naver.com" onclick="msg2(this, 'test');">click(이벤트 속성 및 메서드로 기본동작 막기)</a><br />
  56. </BODY>
  57. </HTML>