์ด์ ํ์ preventDefault
๋ฅผ ์๊ธฐ๋ ํ๋ค์ง ์์๊น...!
๊น์ ์ฌ์ฐ์ ์ง๊ธ ์ฌ๊ธฐ์ ๊ธฐ์ ํ ์ ์๋ ์ํฉ์ด ์๋๋ผ... ๊ตฌ๊ตฌ์ ์ ์ฌ์ฐ์ ๋์ด๋์ ์๋ ์์ง๋ง...
๋์ถฉ ๋๋ฌด ์ค์ํ๋ ์ฑ์ฉ ํ๋ก์ธ์ค ๊ณผ์ ์์, preventDefault
์ ๋ํ ์ง๋ฌธ์ ๋ฐ์๋๋ฐ... ์ ํํ ๊ฐ๋
์ด ์๊ฐ๋์ง ์์๋ฒ๋ฆฌ๋ ๋ถ์์ฌ๊ฐ... ๋์ด์ผ๋ณด๋ฉด preventDefault
๋ฅผ ์ฌ์ฉํด๋ณด์ง ์์ ๊ฒ์ ์๋์๋๋ฐ... ์ ๋๋ "์ง์ ์ฌ์ฉํด๋ณธ ์ ์ด ์์ด์ ์ ๋ชจ๋ฅด๊ฒ ๋ค"๋ผ๊ณ ๋๋ตํด๋ฒ๋ ธ์๊น...
์ ํํ ๊ฐ๋
์ ์ธ์งํ๊ณ ์ฌ์ฉํด์๋ ๊ฒ์ ์๋๊ณ , ์๋ฌ์ฒ๋ฆฌํ๋ฉด์ ๋ ํผ๋ฐ์ค๋ณด๊ณ ์ ์ด๊ฑฐ ์ฐ๋ฉด ๋๋๊ตฌ๋! ํ๊ณ ์ผ๋ ๊ฒ์ด๋, ์ฌ์ค ์ด์คํ๊ฒ ๋๋ฌ๋๋ ๊ฒ๋ณด๋ค๋ ๋ชจ๋ฅธ๋ค๊ณ ํ๋ ํธ์ด ๋์์์ง๋ ๋ชจ๋ฅธ๋ค.
๊ทผ๋ฐ ๊ทธ๋ ๋ค๊ณ preventDefault
๋ฅผ ์ฌ์ฉํด๋ณธ ์ ์ด ์๋ค๊ณ ํ ๊ฒ์ ๊ตณ์ด ์์๋๋ฐ... ํํ ๋ง๊ธ์ด๋ค.
๋๊ฐ์๋ ์์ฃผ์์ฃผ ์ค์ํ ๋ฉด์ ์ธ๋ฐ... ์ฃผ๋์ด๊ฐ๋ฐ์๊ฐ ์์ preventDefault
๋ณ๋ก ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์๋ค๊ณ ํ๋ฉด, ์ ๋ง ๋ ์ฉ... ํด๋ฒ๋ฆด ๋ฏ ์ถ๋ค.
๊ฒฐ๊ตญ ๋ฉด์ ๋ณธ ๋ ์ดํ๋ก ์ง๊ธ๊น์ง๋ ๋ฌธ๋ ๋ฌธ๋ preventDefault
์๊ฐ์ด ๋จธ๋ฆฌ๋ฅผ ์ค์น๊ณ ...
์ด๋ถํฅํ๋ ๊ธฐ์ต์ ๋์ด๋ง๊ฐ๊ณ ... ์ง๊ธ๋ MSWjs ๊ณต๋ถํ๋ ์ค์ ์์ ์ฝ๋ ๋ค์ด ๋ฐ์๋๋ฐ...
์๋๋๋ค๋ฅผ๊น preventDefault
^^* ... ํ ๋งํ์...
DOM ์์๋ค์ ๊ฐ์ ๊ณ ์ ์ ๊ธฐ๋ณธ ๋์์ด ์๋ค.
a
ํ๊ทธ: ํด๋ฆญ์ href ์ดํธ๋ฆฌ๋ทฐํธ์ ์ง์ ๋ ๋งํฌ๋ก ์ด๋
checkbox
์ธํ ํ๊ทธ: ํด๋ฆญ์ ์ฒดํฌ ๋๋ ์ฒดํฌ ํด์
์ด๋ฒคํธ ๊ฐ์ฒด ๋ด์ preventDefault ๋ฉ์๋๋ ์ด๋ฌํ DOM ์์์ ๊ธฐ๋ณธ ๋์์ ์ค๋จ์ํจ๋ค!
<!DOCTYPE html>
<html>
<body>
<a href="https://www.google.com">go</a>
<input type="checkbox">
<script>
document.querySelector("a").onclick = e => {
// a ์์์ ๊ธฐ๋ณธ ๋์์ ์ค๋จํ๋ค.
e.preventDefault();
};
document.querySelector("input[type=checkbox]").onclick = e => {
// checkbox ์์์ ๊ธฐ๋ณธ๋์์ ์ค๋จํ๋ค.
e.preventDefault();
};
</script>
</body>
</html>
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๋ฉด, html ์์๋ค์ ๊ธฐ๋ณธ ๋์์ด ์๋ํ์ง ์๊ฒ๋๋ค!
go๋ผ๋ innerText๋ฅผ ๊ฐ์ง a ํ๊ทธ๋ฅผ ํด๋ฆญํด๋ google๋ก ์ด๋ํ์ง ์๋๋ค!
go ์ฐ์ธก์ ์ฒดํฌ๋ฐ์ค ์ญ์ ๋์ํ์ง ์๋๋ค!
์ฌ์ค ์์ ๊ฐ์ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ทธ๋ฅ a ํ๊ทธ
๋ฅผ ์ ์ฐ๋ฉด ๋ ๋ฏ ์ถ๊ณ ...^^*
์๋์ ๊ฐ์ ์ํฉ์ด๋ผ๋ฉด preventDefalut
์ ํ์ฉ์ด ์ข ๋ ์ค๋๋ ฅ์์ง ์์๊น...?
<a href="https://www.google.com">
<div>์ฌ๊ธฐ ํด๋ฆญํ๋ฉด ์ด๋์๋ผ</div>
<div class="no">์ฌ๊ธฐ ํด๋ฆญํ๋ฉด ์ด๋์๋์ด๋ฐ</div>
</a>
์์ ๊ฐ์ ๊ตฌ์กฐ๋ก html์ด ๊ตฌ์ฑ๋์ด ์์ผ๋ฉด div๊ฐ ๋ ๋ค a ์์๋ผ๋ ๋ถ๋ชจ๊ฐ์ฒด์ ์์๋ค์ด๋ฏ๋ก!
๋ ๋ชจ๋์๊ฒ a์์์ ๊ธฐ๋ณธ ๋์์ด ์ ์ฉ๋์ด ์์ ๊ฒ์ด๋ค!
์ด ๋ ์ฐ๋ฆฌ๋ ์๋ div์์์ ๊ฒฝ์ฐ ํด๋น ๊ธฐ๋ณธ ๋์์ ์ ๊ฑฐํด์ฃผ๊ณ ์ถ์ ๊ฒ์ด๋ค.
๊ทธ๋ด ๋!!
document.querySelector(".no").onclick = (e) => {
// a ์์์ ๊ธฐ๋ณธ ๋์์ ์ค๋จํ๋ค.
e.preventDefault();
};
์์ ๊ฐ์ด ํ์ฉํด์ฃผ๋ฉด ์ div ์์๋ฅผ ํด๋ฆญํ๋ฉด google๋ก ์ด๋ํ์ง๋ง, ์๋์ ๊ฒฝ์ฐ๋ ๊ทธ๋ ์ง ์๋ค!!
"preventDefault๋ฅผ ์ง์ ํ์ฉํด๋ณธ ๊ฒฝํ์ด ๋ง์ด ์๋ค"๋ ๋ฌธ์ ์ ๋ฐ์ธ์ ๋์ฒด ๋ฌด์ ๋๋ฌธ์ด์๋๊ฐ๋ฅผ ๊ณ ๋ฏผํด๋ณด๋ฉด ํ๋ ์ง์ด์ง๋ ์ด์ ๊ฐ ์๋ค. ํด๋น ์ง๋ฌธ์ ์ฌ์ค ์ฒ์๋ถํฐ preventDefault
์ ๋ฌด์์ธ๊ฐ์? ๋ผ๋ ๋ฐฉ์์ ์๋์๊ณ , ์ด๋ฒคํธ ๋ฒ๋ธ๋ง๊ณผ ์บก์ณ๋ง ๋ถํฐ ์ด์ด์ง ์ง๋ฌธ์ด์๋ค. ๊ทธ๋ฌ๋ค๊ฐ ํ์ preventDefalut
์ stopPropagation
์ ํจ๊ป ์ง๋ฌธ์ ์ฃผ์
จ์๋๋ฐ... ๋ด๊ฐ stopPropagation
์ ๋๋ฌด ๋๋ฌด ์ต์ํ ๊ฒ์ ๊ฐ์กฐํ๋ ค๋ ๋๋จธ์ง ์ ์ ์ฌ๊ณ ~๋ฐํ ๋ฃจํธ๊ฐ ๊ณ ์ฅ๋๋ฒ๋ ค์ ์ค์ถ๋ ฅ์ ํด๋ฒ๋ฆฐ ๊ฒ ์๋์์๊น... ๋ญ ๊ทธ๋ฐ ์ด์ ๋ผ๋ ๋ ์ฌ๋ ค๋ณด๋ฉฐ ์ด๋ถํฅํ๋ ๋ด ๋ง์์ ๋ฌ๋๋ณธ๋ค...
๋ชจ์ชผ๋ก! ๊ทธ๋ฐ๋ฐ ๋๋ ์ด์ ์์ ๊ถ๊ธํด์ง๋ ๊ฒ ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ๋ฅผ ๊ณต๋ถํ ๋, preventDefault์ stopPropagation, ๋ ๋ฉ์๋๊ฐ ์์ผ๋ก ๋ฑ์ฅํ๋๋ ๊ฒ์ด๋ค!
์ฌ์ค ๊ฐ๋
์ ์๋ง ๋๊ณ ๋ณด๋ฉด ์๋ก ๋๋ฌด ๋ค๋ฅธ ๋ฉ์๋๊ฐ ์๋๊ฐ! (preventDefault๋ html ์์์ ๊ธฐ๋ณธ ๋์ ๋ฐฉ์ง, stopPropagation์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ๋ฐฉ์ง)
๋ฐ๋ก ์๋ถ๋ถ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ฉฐ ์๊ฐํ ๊ฒ์ preventDefault๋ ๋ฌผ๋ก ๋ค์ํ ํ์ฉ ์ฌ๋ก๊ฐ ์๊ฒ ์ง๋ง, ์ด๋ฒคํธ๊ฐ ์์์๊ฒ ๋๋ฌผ๋ฆผ๋๋ ๊ฒ์ ๋ง๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์๋ณผ ์ ์๋ค๋ ๊ฒ!
์ฌ์ค ๋ด๊ฐ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ฉฐ ์์ฃผ ์ ํด์๋ ํ์ฉ์ฌ๋ก๋ ์คํ๋ ค ์ ์ฝ๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค!
์ฝ๋์ ์ฃผ์์ ํด์ ํด๋ณด๋ฉด ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
form
ํ๊ทธ์ submit ํ ์๋ก๊ณ ์นจ ๊ธฐ๋ณธ๋์์ด ์๋ํ์ง ์๋๋ค!
๋ชจ์ชผ๋ก...
์ด ๊ฐ๋จํ ๋ฉ์๋๋ฅผ ์ ๋๋ ์ฌ์ฉํ๋ฉด์๋ ๋ฏธ๋ฆฌ ์ ๋๋ก ์ง์ด๋์ง ์์๋๊ฐ... ๐ ๐ ๐
๋ญ ํํํด๋ ์์ฉ์ ์๋ค... ์์ผ๋ก๋ ์๋ฌํธ๋ค๋ง์ ์๊ฐ์ ์ข ์์ผ๋ฉด์ ๊ฐ๋ฐํ์...
์ ๋ ์ ๋ชฐ๋๋๋ฐ ์ ์๊ฒ๋์์ต๋๋ค
๊ฐ์ฌํฉ๋;๋ค ใ ใ