JavaScript - 이벤트
<!DOCTYPE html>
<
html
>
<
body
>
<
input
type
=
"button"
onclick
=
"alert(window.location)"
value
=
"alert(window.href)"
/>
<
input
type
=
"button"
onclick
=
"window.open('bom.html')"
value
=
"window.open('bom.html')"
/>
</
body
>
</
html
>
event target
->target은 이벤트가 일어날 객체를 의미한다.
event type
->이벤트의 종류를 의미한다.
(https://developer.mozilla.org/en-US/docs/Web/Reference/Events)
event handler
-> 이벤트가 발생했을 때 동작하는 코드를 의미한다.
위의 예제에서는 alert(window.location)이 여기에 해당한다.
출처 : https://opentutorials.org/module/904/6629
** 이벤트 등록방법
1. inline : 이벤트를 이벤트 대상의 태그 속성으로 지정하는 것이다.<
input
type
=
"button"
onclick
=
"alert('Hello world');"
value
=
"button"
/>
<
input
type
=
"button"
onclick
=
"alert('Hello world, '+this.value);"
value
=
"button"
/>
2. property listener :
이벤트 대상에 해당하는 객체의 프로퍼티로 이벤트를 등록하는 방식
event 객체에는 여러가지 정보가 담겨있다!!(console.dir(event); 확인)
<
body
>
<
input
type
=
"button"
id
=
"target"
value
=
"button"
/>
<
script
>
var t = document.getElementById('target');
t.onclick = function(event){
alert('Hello world, '+event.target.value)
}
</
script
>
// I.E 8이하 버젼 호환을 위해서는 아래와 같이 추가 예외처리 필요
<
input
type
=
"button"
id
=
"target"
value
=
"button"
/>
<
script
>
var t = document.getElementById('target');
t.onclick = function(event){
var event = event || window.event;
var target = event.target || event.srcElement;
alert('Hello world, '+target.value)
}
</
script
>
3. addEventListener() :
가장 권장하는 방식. 한 target에 여러 이벤트 등록 혹은 정의해 놓은 한 이벤트 핸들러를 여러 객체에 등록할 수 있다.
var
t = document.getElementById(
'target'
);
if
(t.addEventListener){
t.addEventListener(
'click'
,
function
(event){
alert(
'Hello world, '
+event.target.value);
});
}
else
if
(t.attachEvent){ // I.E 8이하 버젼의 호환을 위해..
t.attachEvent(
'onclick'
,
function
(event){
alert(
'Hello world, '
+event.target.value);
})
}
<
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
>
<
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
>
출처
https://opentutorials.org/module/904/6759
https://opentutorials.org/module/904/6760
https://opentutorials.org/module/904/6761