๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

JavaScript์˜ preventDefault ๋ฉ”์„œ๋“œ: ๊ฐœ๋…, ํ™œ์šฉ, ์žฅ๋‹จ์ 

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 3. 13.
728x90

JavaScript์˜ preventDefault ๋ฉ”์„œ๋“œ: ๊ฐœ๋…, ํ™œ์šฉ, ์žฅ๋‹จ์ 

1. preventDefault๋ž€?

preventDefault๋Š” ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ทจ์†Œํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด์—์„œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ๋™์ž‘์„ ์ค‘๋‹จํ•˜๊ณ  ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. preventDefault์˜ ์—ญํ• 

  • ๊ธฐ๋ณธ ๋™์ž‘ ์ฐจ๋‹จ: preventDefault๋Š” ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ณธ ๋™์ž‘(์˜ˆ: ๋งํฌ ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€ ์ด๋™)์„ ์ฐจ๋‹จํ•˜์—ฌ ์ž์ฒด์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

3. ์–ด๋Š ์ƒํ™ฉ์— preventDefault๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๊ฐ€?

  • ํผ ์ œ์ถœ ์ด๋ฒคํŠธ: ํผ ์ œ์ถœ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งํฌ ํด๋ฆญ ์ด๋ฒคํŠธ: ๋งํฌ๋ฅผ ํด๋ฆญํ•  ๋•Œ ํŽ˜์ด์ง€ ์ด๋™์„ ๋ง‰๊ณ , ๋ชจ๋‹ฌ ์ฐฝ์ด๋‚˜ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ: ํŠน์ • ํ‚ค์˜ ๊ธฐ๋ณธ ๋™์ž‘(์˜ˆ: ์ŠคํŽ˜์ด์Šค๋ฐ”๋กœ ์Šคํฌ๋กค)์„ ๋ง‰๊ณ , ์‚ฌ์šฉ์ž ์ •์˜ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. preventDefault์˜ ์žฅ๋‹จ์ 

์žฅ์ :

  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ : ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋™์ž‘(์˜ˆ: ํŽ˜์ด์ง€ ์ด๋™)์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๋™์ž‘ ์ œ์–ด: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ค‘๋‹จํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜ ๋™์ž‘์„ ์ถ”๊ฐ€๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ :

  • ์ž˜๋ชป ์‚ฌ์šฉ ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: ํ•„์š” ์ด์ƒ์œผ๋กœ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. preventDefault๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ ์ฝ”๋“œ

ํผ ์ œ์ถœ ์ด๋ฒคํŠธ์—์„œ preventDefault ์‚ฌ์šฉ

document.querySelector('form').addEventListener('submit', function(event) {
  event.preventDefault(); // ๊ธฐ๋ณธ ์ œ์ถœ ๋™์ž‘ ์ฐจ๋‹จ
  // ํผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์„œ๋ฒ„์— ์ „์†ก
});

๋งํฌ ํด๋ฆญ ์ด๋ฒคํŠธ์—์„œ preventDefault ์‚ฌ์šฉ

document.querySelector('a').addEventListener('click', function(event) {
  event.preventDefault(); // ๋งํฌ์˜ ๊ธฐ๋ณธ ๋™์ž‘(ํŽ˜์ด์ง€ ์ด๋™) ์ฐจ๋‹จ
  // ๋ชจ๋‹ฌ ์ฐฝ ์—ด๊ธฐ ๋“ฑ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋™์ž‘ ์ˆ˜ํ–‰
});

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ์—์„œ preventDefault ์‚ฌ์šฉ

window.addEventListener('keydown', function(event) {
  if (event.key === ' ') {
    event.preventDefault(); // ์ŠคํŽ˜์ด์Šค๋ฐ”์˜ ๊ธฐ๋ณธ ์Šคํฌ๋กค ๋™์ž‘ ์ฐจ๋‹จ
    // ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๋™์ž‘ ์ˆ˜ํ–‰
  }
});

6. ์—ฐ๊ด€๋œ ๊ธฐ์ˆ 

  • stopPropagation(): ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, preventDefault์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ชจ ์š”์†Œ๋กœ์˜ ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • addEventListener(): ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, preventDefault๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

preventDefault๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€