일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준 파이썬
- blind sql injection
- 메소드
- IF문
- 배열
- 자바스크립트
- suninatas 풀이
- 사칙연산
- xss game 풀이
- element 조회
- htmlspecialchars
- python
- 포인터
- Pwndbg
- 백준 알고리즘
- window
- jQuery
- github
- 함수
- 객체
- property
- document
- 조건문
- object
- lord of sql injection
- burp suite
- 김성엽 대표님
- sql injection
- 파이썬
- xss game
- Today
- Total
power-girl0-0
addEventListener( ) 본문
생활코딩 웹브라우저 javascript를 참고하여 공부하였습니다.
스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.
( 출처 : https://opentutorials.org/course/743inf.run/pBzy)
addEventListener( )
addEventListener은 이벤트를 등록하는 가장 권장되는 방식이다.
이 방식을 이용하면 여러개의 이벤트 핸들러를 등록할 수 있다.
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.addEventListener('click', function(event){
alert('Hello world, '+event.target.value);
});
</script>
위 코드와 같이 t객체에 addEventListener을 이용하여, 해당 객체를 클릭하면 두번째 인자의 함수가 실행된다.
하지만, 위 방식은 ie8이하에서는 호환되지 않는다.
따라서, attachEvent 메소드를 사용해야 하며, 이것은 addEventListener와 같은 방식인데 이름만 다른 것이다.
var t = document.getElementById('target');
if(t.addEventListener){
t.addEventListener('click', function(event){
alert('Hello world, '+event.target.value);
});
} else if(t.attachEvent){
t.attachEvent('onclick', function(event){
alert('Hello world, '+event.target.value);
})
}
요즘은 이런 문제들을 라이브러리가 알아서 처리해준다.
addEventListener 방식의 장점은 하나의 이벤트 대상에 복수의 동일 이벤트 타입 리스너를 등록할 수 있다는 것이다.
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.addEventListener('click', function(event){
alert(1);
});
t.addEventListener('click', function(event){
alert(2);
});
</script>
이벤트 객체를 이용하면 복수의 element에 하나의 리스너를 등록해서 재사용할 수 있다.
이에 반면, property 방식으로 복수의 이벤트를 설치하면 하나의 이벤트 핸들러만 설치가 가능하다.
<input type="button" id="target1" value="button1" />
<input type="button" id="target2" value="button2" />
<script>
var t1 = document.getElementById('target1');
var t2 = document.getElementById('target2');
function btn_listener(event){
switch(event.target.id){
case 'target1':
alert(1);
break;
case 'target2':
alert(2);
break;
}
}
t1.addEventListener('click', btn_listener);
t2.addEventListener('click', btn_listener);
</script>
위 소스와 같이 이벤트 리스너를 하나 만들어 놓고, 여러 개의 이벤트 target에다가 등록하는 것을 통해서 이벤트 리스너를 재활용할 수 있다.
여기서, 문제는 이벤트 target이 이벤트 발생시켰을 때, 그 이벤트가 어느 위치에서 발생하는 것을 알아야 한다.
이때 사용된 것이 event.target.id이다.
'언어 > Javascript' 카테고리의 다른 글
기본동작의 취소 (0) | 2021.02.10 |
---|---|
이벤트 전파(버블링과 캡처링) (0) | 2021.02.10 |
프로퍼티 리스너 (0) | 2021.02.10 |
inline ( 인라인 방식 ) (0) | 2021.02.10 |
이벤트 (0) | 2021.02.10 |