본문 바로가기

학교수업/웹 프로그래밍

9. 이벤트 기초 및 활용

1. 이벤트

마우스 클릭, 키보드 입력, 로딩, 타임아웃 등 사용자의 입력행위나 브라우저의 상태 변화를 브라우저가 자바스크립트 코드에게 알리는 통지

 

이벤트리스너

발생한 이벤트에 적절하게 대처하기위해 작성된 자바스크립트코드

 

이벤트가 DOM객체에 발생한다 == 이벤트가 HTML태그에 발생한다 == 객체에 이벤트가 발생한다

 

이벤트리스너 만들기

  • HTML 태그내에 작성
!<!DOCTYPE html>
<html>
    <body>
        <p onmouseover="this.style.backgroundColor='red'"
        onmouseout="this.style.backgroundColor='black'";>
        마우스 올리면 색 변경 </p>
    </body>
</html>
  • DOM객체의 이벤트리스너 프로퍼티에 작성
<!DOCTYPE html>
<html>
    <body>
        <script>
            var p;
            function init(){    //문서가 완전히 로드되었을 때 호출
                p = document.getElementById("p");
                p.onmouseover = over; //over()리스너로 등록 단 이름만 넣어야 함
                p.onmouseout = out;

            }

            function over(){
                p.style.backgroundColor = "orchid";
            }
            function out(){
                p.style.backgroundColor="white";
            }
        </script>
        <p id="p">마우스 올리면 색 변경</p>
    </body>
</html>
  • DOM객체의 addEventListener()메소드 활용

다른 이벤트리스너들과 달리 removeEventListener이용해 제거 가능

동일 이벤트 리스너에 여러 함수 중복 등록 가능

<!DOCTYPE html>
<html>
    <body>
        
        <script>
            var p;
            function init(){
                p = document.getElementById("p");
                p.addEventListener("mouseover", over);
                p.addEventListener("mouseout", out);
            }

            function over(){
                p.style.backgroundcolor = "red";

            }
            function out(){
                p.style.backgroundcolor="black";
            }
        </script>

        <p id="p">마우스 올리면 색 변경</p>
    </body>
</html>
  • 익명함수로 이벤트 리스너 작성

익명함수: 함수 이름 없이 필요한 곳에 함수 바로 작성하는 방법

<!DOCTYPE html>
<html>
    <body>
        
        <script>
            var p;
            function init(){
                p = document.getElementById("p");
                p.onmouseover = function(){
                    this.style.backgroundcolor = "red";
                }
                p.addEventListener("mouseout",
                function(){
                    this.style.backgroundcolor="black";

                }
                );

        </script>

        <p id="p">마우스 올리면 색 변경</p>
    </body>
</html>

 

2. 이벤트 객체

이벤트에 대한 다양한 정보 담은 이벤트 객체

이벤트 리스너로 전달됨

이벤트 처리후 이벤트 객체는 소멸됨

 

이벤트 객체 전달받기

1. 이름을 가진 이벤트리스너 함수인 경우

function f(e){}

obj.onclick = f;

2. 익명 함수인 경우

obj.onclick = function(e){}

3. html태그의 리스너의 경우

function(e){}
<button onclick="f(event)"> 버튼 </button>
<div onclick="alert(evetn.type)">버튼</div>

 

이벤트 객체에 들어있는 정보

프로퍼티, 메소드가 들어있다.

이벤트 종류에 따라 프로퍼티와 메소드가 다르다.

 

이벤트 타겟과 target프로퍼티

target프로퍼티: 이벤트 타겟 객체

이벤트 타겟: 이벤트를 유발시킨 객체(태그)

 

이벤트의 디폴트 행동 취소, preventDefault()

a, checkbox 등

1. onclick = "return false"로 지정

2. onclick="event.preventDefault()"로 지정

 

3. 이벤트 흐름

이벤트 흐름과 이벤트리스너

캡쳐단계

window >> 타깃객체

 

버블단계

타깃객체 >>window

 

캡쳐 리스너와 버블 리스너

하나의 돔 객체가 둘 모두 가질 수 있으므로 분ㄴ명히 지정해야 한다.

 

이벤트 흐름 중단, stopPropagation()l

 

4. 마우스핸들링

onclick: 클릭시

ondbclick: 더블 클릭시

onmousemove: 마우스가 움직이는 동안

oncontextmenu: 마우스 오른쪽 버튼 클릭시 출력되는 메뉴

 

5.문서와 이미지 로딩

문서의 로딩 완료

window.onload = "alert('onload');
<body onload="alert('onload')">

 

6.폼과 이벤트 활용

onblur: 포커스 잃는 요소

onfocus: 포커스 얻는 요소

'학교수업 > 웹 프로그래밍' 카테고리의 다른 글

08. HTML DOM과 Document  (0) 2022.06.08
07. 자바스크립트 코어 객체와 배열  (0) 2022.06.08
6. 자바스트립트 언어  (0) 2022.06.08
5. CSS 고급활용  (0) 2022.06.07
4. CSS  (0) 2022.06.06