이벤트

1.     이벤트의 종류와 용어

○ 종류

(1)   마우스 이벤트

(2)   키보드 이벤트

(3)   HTML 프레임 이벤트

(4)   HTML 입력 양식 이벤트

(5)   유저 인터페이스 이벤트

(6)   구조 변화 이벤트

(7)   터치 이벤트

 

○ 용어 정리

이벤트를 연결한다” : window 객체의 onload 속성에 함수 자료형을 할당하는 것

window 객체의 load 이벤트

<script>

window.onload = function( ){ };

</script>

load : 이벤트 이름 또는 이벤트 타입

onload : 이벤트 속성

□ 이벤트 리스너 / 이벤트 핸들러 : 이벤트 속성에 할당한 함수

window.onload = function () {

// 변수를 선언합니다.

var header = document.getElementById( 'header');

// 이벤트를 연결합니다.

function whenClickO { alert('CLICK'); }

header.onclick = whenClick;

}

 

■ 이벤트 연결 방법

    DOM Level 0

-      인라인 이벤트 모델

-      기본이벤트 모델

    DOM Level 2

-      마이크로소프트 인터넷 익스플로러 이벤트 모델

-      표준이벤트 모델

 

2.     고전 이벤트 모델

getElementByld ( )와 같은 메서드로 문서 객체를 가져오고 이벤트를 연결

○ 문서 객체에 이벤트 속성에 이벤트 핸들러 대입하면 이벤트 연결

header.onclick = null; 이렇게 속성을 null로 하면 이벤트 제거

window.onload = function () {

// 변수를 선언합니다.

var header = document.getElementById('header');

// 이벤트를 연결합니다.

header.onclick = function () { alert('클릭‘); }

// 이벤트를 제거합니다.

header.onclick = null;

}

 

3.     이벤트 발생 객체와 이벤트 객체

○ 이벤트 발생 객체 찾기

■ 이벤트 리스너 안에서 this 키워드를 사용

document.getElementById('header').onclick = function () {

this.style.color = 'orange';

this, style.backgroundcolor = ‘red'

}

document,getElementById('header').onclick = function (e) {

var event = e II window.event;

}

□ 조건문!

e가 존재하면 e를 변수 event에 집어넣고, e undefined이면 window.event 속성을 변수 event에 넣음

 

4.     이벤트 강제 실행

○ 메서드를 호출하는 것처럼 이벤트 속성을 호출

buttonA.onclick( );같이 이벤트 함수 안에 넣어줌 ㅎㅎ

 

5.     인라인 이벤트 모델

HTML 페이지의 가장 기본적인 이벤트 연결 방법

<body> <h1 onclick="“>Click/h1</body>

<h1 onclick= "var aa=10; alertaa>Click</h1>

○ 태그 안 이벤트 속성에 직접 이벤트를 쓰는 것으로 함수를 정의해 넣어도 됨

이벤트를 호출할 때 매개변수를 넣음!

<script>

function whenClick(e) {alert('클릭,);}

</script>

<body>

<h1 onclick=“whenClick(event)“>Click</h1>

</body>

 

6.     디폴트 이벤트 제거

○ 디폴트 이벤트 : 일부 HTML 태그에 이미 정의된 이벤트 리스너

submit 디폴트 이벤트 제거

window.onload = function () {

// 이벤트를 연결합니다.

document.getElementById('my-form').onsubmit = function ( ) {

// 여기 새로운 이벤트 정의해도 됨

// 실행 안되게 하려면

return false;        }        }

○ 인라인 이벤트 모델 - 디폴트 이벤트 제거

function whenSubmitO {

// 유효성 검사

return false;

}

<form onsubmit= "return whenSubmit()">

 

7.     이벤트 전달

○ 이벤트 전달 : 어떠한 이벤트가 먼저 발생해 어떤 순서로 발생하는지의 순서

○ 이벤트 버블링 방식을 따름

이벤트 버블링 : 자식 노드에서 부모 노드 순으로 이벤트 실행

이벤트 캡쳐링 : 부모 노드에서 자식 노드 순으로 이벤트 실행

○ 이벤트 전달을 막아서 원하는 기능만 실행하도록 하는 것!이 중요

■ 인터넷 익스플로러와 그외 브라우저가 이벤트 전달을 막는 방식이 다름

□인터넷 익스플로러 : 이벤트 객체의 cancelBubble 속성을 true로 변경

□그 이외의 브라우저 : 이벤트 객체의 stopPropagation( ) 메서드를 사용

stopPropagation( ) 메서드가 있으면 사용하고 그렇지 않으면 cancelBubble 속성을 true

event.cancelBubble = true;

if (event.stopPropagation) {

event.stopPropagation();        }

 

8.     인터넷 익스플로러 이벤트 모델

○ 매개변수에 이벤트 속성을 씀

○ 객체에 attachEvent( ) 메서드로 이벤트를 연결

attachEvent(eventProperty, eventListener);

window.attachEvent('onload', function () { });

○ 다중 이벤트 연결 가능, 연결한 순서대로 작동

detachEvent () 메서드 : 이벤트를 제거

detachEvent(eventProperty, eventListener);

var header = document,getElementById( 'my-header');

var handler = function () { alert(‘클릭,); };

header.attachEvent('onclick', handler);

header.detachEvent('onclick', handler);

attachEvent () 메서드는 인터넷 익스플로러에만 있으므로 다른 브라우저에서는 에러 발생

 

9.     표준 이벤트 모델

○ 한 번에 여러 가지의 이벤트 리스너를 추가 & 이벤트 캡쳐링 지원

○ 이벤트 이름을 매개변수로 입력

addEventListener(eventName, handler, useCapture);

useCapture는 입력하지 않으면 자동으로 false를 입력

window.onload = function () {

var header = document.getElementById('my-header');

header.addEventListener('click', function () {    this.innerHTML += ‘+’;

})  }

removeEventListener(eventName, handler);

 

'JavaScript & JQuery' 카테고리의 다른 글

[Javascript][이론]문서 객체 모델  (0) 2020.09.10
[Javascript][이론]브라우저 객체  (0) 2020.09.09

+ Recent posts