JAVASCRIPT_Event
๐ JAVASCRIPT
๐ Event
Event ๋?
- ์น ํ์ด์ง์์ ์ฌ๋ฌ ์ข ๋ฅ์ ์ํธ์์ฉ์ด ์์ ๋ ๋ง๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
- ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํค๋ณด๋๋ฅผ ๋๋ฅผ ๋ ๋ฑ๋ฑ ๋ฐ์ํ๋ ๋ค์ํ ์ด๋ฒคํธ๊ฐ ์๋ค.
- JavaScript๋ฅผ ์ฌ์ฉํ์ฌ DOM์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ์ฌ ์ด๋ฒคํธ์ ๋์ํ๋ ์ฌ๋ฌ ์์ ์ ์ํํ๋ค.
- ์ด๋ฒคํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์์ ์ฐ๊ฒฐ์ด ๋๊ณ , ์ด ํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์๋ ์คํ๋์ง ์๋ค๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์คํํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ( Handler ) ๋๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ( Listener ) ๋ผ ํ๋ฉฐ ์ด ํจ์์ ์ด๋ฒคํธ ๋ฐ์ ์ ์คํํด์ผ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๋ง์ฐ์ค ์ด๋ฒคํธ
- ๋ง์ฐ์ค ์ด๋ฒคํธ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ด๋ฒคํธ ์ด๋ค.
- ๋ง์ฐ์ค ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ ๋ฌ๋๋ ์ด๋ฒคํธ ๊ฐ์ฒด์๋ ๋ง์ฐ์ค ์์น์ ๋ฒํผ ์ํ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
<bojdy>
<div onclick="javascript:open();"> ํด๋ฆญ </div>
<script type="text/javascript">
function open(){
alert('์๋
ํ์ธ์');
}
</script>
</body>
-> ํด๋ฆญ์ ๋๋ฅด๋ฉด '์๋
ํ์ธ์'๋ผ๋ ์ฐฝ์ด ๋ฌ๋ค.
-
onclick
๋ง์ฐ์ค๋ก Element๋ฅผ ํด๋ฆญํ์ ๋ ๋ฐ์ํ๋ค. -
ondblclick
๋ง์ฐ์ค๋ก Element๋ฅผ ๋๋ธ ํด๋ฆญํ์ ๋ ๋ฐ์ํ๋ค. -
onmouseup
๋ง์ฐ์ค๋ก Element์์ ๋ง์ฐ์ค ๋ฒํผ์ ์ฌ๋ ธ์ ๋ ๋ฐ์ํ๋ค. -
onmousedown
๋ง์ฐ์ค๋ก Element์์ ๋ง์ฐ์ค ๋ฒํผ์ ๋๋ ์ ๋ ๋ฐ์ํ๋ค. -
onmouseover
๋ง์ฐ์ค๋ฅผ ์์ง์ฌ์ Element ๋ฐ์์ ์์ผ๋ก ๋ค์ด์ฌ ๋ ๋ฐ์ํ๋ค. -
onmouseout
๋ง์ฐ์ค๋ฅผ ์์ง์ฌ์ Element ์์์ ๋ฐ์ผ๋ก ๋๊ฐ ๋ ๋ฐ์ํ๋ค. -
onmousemove
๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋ ๋ฐ์ํ๋ค.
ํค๋ณด๋ ์ด๋ฒคํธ
- ํค๋ณด๋์ ์ปค์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ์ง์ ์์ ํค๋ณด๋๋ฅผ ์กฐ์ํ ๋ ์ด๋ฒคํธ ๋ฐ์ํ๋ค.
- ํค๋ณด๋ ์กฐ์์ ์ด์์ฒด์ ์ ์ํฅ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ํน์ ํค๊ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ์๊ฒ ์ ๋ฌ๋์ง ์์ ์ ์๋ค.
-
ํค๋ณด๋ ์ปค์๊ฐ ๋ํ๋ด๋ ์์๊ฐ ์๋ค๋ฉด document์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
-
onkeypress
ํค๋ณด๋๊ฐ ๋๋ ค ์ก์ ๋ ๋ฐ์ํ๋ค. ( ์์คํค ์ฝ๋ ) -
onkeydown
ํค๋ณด๋๋ฅผ ๋๋ฅด๋ ์๊ฐ ๋ฐ์ํ๋ค. ( KeyCode ) -
onkeyup
ํค๋ณด๋์ ๋๋ฅด๊ณ ์๋ ํค๋ฅผ ๋ ๋ ๋ฐ์ํ๋ค.
Frame ( UI ) ์ด๋ฒคํธ
- Frame ๊ด๋ จ ์ด๋ฒคํธ๋ ํน์ DOM ๋ฌธ์์ ๊ด๋ จ๋ ์ด๋ฒคํธ๊ฐ ์๋๋ผ Frame ์์ฒด์ ๋ํ ์ด๋ฒคํธ์ด๋ค.
- load ์ด๋ฒคํธ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ ๋๋ค.
- Load๋ ๋ฌธ์ ๋ฐ ์์๋ค์ด ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ํ์ฌ๋๋ฉด ์ด๋ฒคํธ๋ฅผ ์ํํ๋ค.
- unload๋ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๋ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง๋ง, ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๋๋ ๊ฒ์ ๋ง์ ์ ์๋ค.
window.onload = function(){
๋ก๋ฉ ๋์์ ๋ ์คํํ ๊ฒ๋ค์ ์์ฑ
}
-
onload
document, image, frame ๋ฑ์ด ๋ชจ๋ ๋ก๋ฉ ๋์์ ๋ ๋ฐ์ํ๋ค. -
onabort
์ด๋ฏธ์ง ๋ฑ์ ๋ด์ฉ์ ๋ก๋ฉํ๋ ๋์ค ์ทจ์ ๋ฑ์ผ๋ก ์ค๋จ ๋์์ ๋ ๋ฐ์ํ๋ค. -
onerror
์ด๋ฏธ์ง ๋ฑ์ ๋ด์ฉ์ ๋ก๋ฉ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ ํ์ ๋ ๋ฐ์ํ๋ค. -
onresize
document, element์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ ๋์์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค. -
onscroll
document, element๊ฐ ์คํฌ๋กค ๋์์ ๋ ๋ฐ์ํ๋ค. -
onselect
ํ ์คํธ๋ฅผ ์ ํ ํ์ ๋ ๋ฐ์ํ๋ค.
ํผ ( Form ) ์ด๋ฒคํธ
- Form ๊ด๋ จ ์ด๋ฒคํธ๋ ์ฌ๋ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ฐ์ฅ ์์ ์ ์ผ๋ก ๋์ํ๋ ์ด๋ฒคํธ์ด๋ค.
- ์์ฃผ ์ฌ์ฉ๋๋ ์ด๋ฒคํธ๋ก form์ด ์ ์ก๋ ๋์๋ submit ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
- Form์ ์ด๊ธฐํ ํ ๋๋ reset ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
-
submit ๊ณผ reset ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ทจ์ํ ์ ์๋ค.
-
onsubmit
form์ด ์ ์ก๋ ๋ ๋ฐ์ํ๋ค. -
onreset
์ ๋ ฅ form์ด reset๋ ๋ ๋ฐ์ํ๋ค. -
oninput
input ๋๋ textarea์ ๊ฐ์ด ๋ณ๊ฒฝ ๋์์ ๋ ๋ฐ์ํ๋ค. -
onchange
select box, checkbox, radio button์ ์ํ๊ฐ ๋ณ๊ฒฝ ๋์์ ๋ ๋ฐ์ํ๋ค. -
onfocus(focusin)
input๊ณผ ๊ฐ์ ์์์ ์ ๋ ฅ ํฌ์ปค์ค๊ฐ ๋ค์ด ์ฌ ๋ ๋ฐ์ํ๋ค. -
onblur(focusout)
input๊ณผ ๊ฐ์ ์์ ๋ฑ์์ ์ ๋ ฅ ํฌ์ปค์ค๊ฐ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋ํ ๋ ๋ฐ์ํ๋ค. -
onselect
input, textarea์ ์ ๋ ฅ ๊ฐ ์ค ์ผ๋ถ๊ฐ ๋ง์ฐ์ค ๋ฑ์ผ๋ก ์ ํ๋ ๋ ๋ฐ์ํ๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ
- ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ๋์ํ๋ ์์ ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.
- ์ด๋ค ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์์ ์ ๋ฑ๋กํ๋ ๊ฒ์ โ์ด๋ฒคํธ ํธ๋ค๋ฌ ( ํน์ ๋ฆฌ์ค๋ )๋ฅผ ๋ฑ๋กํ๋คโ ๋ผ๊ณ ํ๋ค.
์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ
- HTML ์์์ ๋ด๋ถ์์ ์ง์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ค.
- ์ด ๋ฐฉ๋ฒ์ HTML ์ฝ๋๋ฅผ JS์ฝ๋๊ฐ ์นจ๋ฒํ๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํจ์๋ฅผ ํ ๋ฒ์ ํธ์ถ๊ฐ๋ฅ
- ํ๋์ ์ฌ์ฉํ์ง ์์๋ค๊ฐ ์ต๊ทผ ๊ด์ฌ ๋ฐ๊ณ ์๋ CBD( Component Based Development ) ๋ฐฉ์์ Angular / React / Vue.js ์ ๊ฐ์ framework / library ์์๋ ์ธ๋ผ์ธ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ค. ( CBD ์์๋ html, css, js ๋ฅผ view ์ ๊ตฌ์ฑ ์์๋ก๋ง ์๊ฐํ๊ธฐ ๋๋ฌธ์ )
<script type="text/javascript">
var msg1 = function(){
alert('HI');
};
var msg2 = function(){
var msg = document.querySelector('#div1');
msg.style.color='red';
};
</script>
</head>
<body>
<div id = "div1" onclick="msg1(); msg2();">์๋
ํ์ธ์ ~ </div>
</body>
-> HI๋ผ๋ ์ฐฝ์ด ๋ด๋ค๊ฐ '์๋
ํ์ธ์ ~' ๋ผ๋ ๋ฌธ์๊ฐ ๋นจ๊ฐ์์ผ๋ก ์ถ๋ ฅ๋๋ค. ( ๋๊ฐ์ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ )
์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ ๋ฐฉ์
- JavaScript ์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- JS์ ๋ฑ๋กํจ์ผ๋ก์จ HTML ์ฝ๋์ JS ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค. ( ์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฐฉ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ )
- ์ด๋ฒคํธ ๋์์ด ๋๋ ํน์ DOM์ ์ ํํ๊ณ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ์ ํ๋์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ง์ ๋ฐ์ธ๋ฉ ํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค. ( ๋์ ์ ์ธ๋ ํจ์๊ฐ ์คํ๋๋ค. )
<body>
<div id="div1">ํด๋ฆญํด๋ณด์ธ์</div>
<script type="text/javascript">
document.querySelector("#div").onclick = function () {
alert("์๋
ํ์ธ์");
};
</script>
</body>
-> div1 ์์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด '์๋
ํ์ธ์' ์ฐฝ์ ๋์ด๋ค
addEventListener ๋ฉ์๋ ๋ฐฉ์
- addEventListener ( ์ด๋ฒคํธ ์ด๋ฆ, ์ด๋ฒคํธ ํธ๋ค๋ฌ, ์บก์ณ๋ง ์ฌ๋ถ )
- ์ด๋ฒคํธ ์ด๋ฆ์ on์ ๋นผ๊ณ ์ฌ์ฉํ๋ค. ์บก์ฒ๋ง ์ฌ๋ถ๋ ์ ์ฌ์ฉํ์ง ์์
- ๋์ DOM ์์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ ๋ ์ฝ๋ฐฑ ํจ์ ( ์ด๋ฒคํธ ํธ๋ค๋ฌ )๋ฅผ ์ง์ ํ๋ค.
- ์ฅ์
- ํ๋์ ์ด๋ฒคํธ์ ๋ํด ํ๋ ์ด์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ์ง์ํ๋ค.
- HTML ์์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ DOM์ ๋ํด ๋์ํ๋ค.
์์์ ๊ฐ ๊ฒ์ฌ๋ฅผ ์ฌ๋ฌ๊ฐ ํด์ผํ๋ ๊ฒฝ์ฐ addEventListner ์ฌ์ฉ๋ฒ -> ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ด๋ถ์์ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ์
<body>
<label>์์ด๋ <input type="text" /></label>
<div class="message"></div>
<script>
const MIN_ID_LENGTH = 8;
const input = document.querySelector('input[type="text"]');
const msg = document.querySelector('.message');
function checkVal(len){
if(input.value.length < script len){
msg.innerHTML = '๊ฐ์' + len + '์ ์ด์ ์
๋ ฅํด์ฃผ์ธ์';
}else{
msg.innerHTML = '';
}
}
input.addEventListener('blur', function () {
checkVal(MIN_ID_LENGTH);
})
</script>
</body>
-> ์์ด๋๋ฅผ ์
๋ ฅํ๋ ๊ณณ์์ 8์ ๋ณด๋ค ์ ์ ๋ฌธ์์ด๋ก ์
๋ ฅํ๋ฉด ๊ฐ์ 8์ ์ด์
์
๋ ฅํด์ฃผ์ธ์ ๋ผ๊ณ ์ถ๋ ฅ๋๋ค.
๋ฒ๋ธ๋ง๊ณผ ์บก์ณ๋ง
-
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ HTML๋ก ๋ถํฐ ์ด๋ฒคํธ์ ๊ทผ์์ง์ธ ์์์์๊น์ง ๊ฒ์ฌํ๋ ๊ฒ์ ์บก์ณ๋ง์ด๋ผ ํ๋ค.
- ์ด๋ฒคํธ ์บก์ณ๋ง์์ ์บก์ณ ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด ์์ผ๋ฉด ์ํํ๋ค.
-
์ด๋ฒคํธ ๋ฐ์ ์์ ๋ถํฐ ์์๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ์์๊น์ง ์ฌ๋ผ๊ฐ๋ฉด์ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด๋ผ ํ๋ค.
- ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์์ ๋ฒ๋ธ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด ์์ผ๋ฉด ์ํํ๋ค.
Event ๋ง๋ฌด๋ฆฌ
JavaScript์์์ ๋ง์ Event์ ๋ํด ์์๋ณด์๋ค.
ํ์คํ ๊ธฐ๋ฅ๋ ๋ง๊ณ ์ด๋ฒคํธ์ ์๋ ๋ง์ ๊ฒ ๊ฐ๋ค.
์ด๊ฒ๊น์ง ๊ณต๋ถํ๊ณ ๋๋ ํ์คํ ์น์ ๊ธฐ๋ณธ์ธ ๋ก๊ทธ์ธ, ํ์๊ฐ์
๊ฐ์ ๊ฒ๋ค์ ์ด๋ป๊ฒ ๊ตฌ์ํด์ผ ํ ์ง ๊ฐ์ด ์กํ๋ ๊ฒ ๊ฐ๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ ๋๋ ์ด๋ฒคํธ๋ค์ ํ์คํ ์์๋ฌ์ ๋์ค์ ๊ตฌํํ ๋ ๋ง์ด ์จ๋จน์ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๊ฐ์ ๊ฒฝ์ฐ์๋ 3๊ฐ์ง์ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๋ค ์๊ณ ์์ด์ผ ์ข์ ๊ฒ ๊ฐ๋ค.