CodeGym /ํ–‰๋™ /Frontend SELF KO /์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ

์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ

Frontend SELF KO
๋ ˆ๋ฒจ 42 , ๋ ˆ์Šจ 0
์‚ฌ์šฉ ๊ฐ€๋Šฅ

6.1 ์ด๋ฒคํŠธ ๊ฐ์ฒด

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

์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด. ์ด ๊ฐ์ฒด๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ผ.

์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์†์„ฑ:

  1. type: ์ด๋ฒคํŠธ์˜ ์œ ํ˜• (์˜ˆ: click, keydown).
  2. target: ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ.
  3. currentTarget: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—ฐ๊ฒฐ๋œ ์š”์†Œ.
  4. eventPhase: ์ด๋ฒคํŠธ์˜ ๋‹จ๊ณ„ (์บก์ฒ˜, ํƒ€๊ฒŸ, ๋ฒ„๋ธ”๋ง).
  5. bubbles: ์ด๋ฒคํŠธ๊ฐ€ ๋ฒ„๋ธ”๋ง๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ๊ฐ’.
  6. cancelable: ์ด๋ฒคํŠธ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ๊ฐ’.
  7. defaultPrevented: ๊ธฐ๋ณธ ๋™์ž‘์ด ๋ฐฉ์ง€๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ๊ฐ’.
  8. timeStamp: ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋œ ์‹œ๊ฐ„.
  9. isTrusted: ์ด๋ฒคํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ ๊ฐ’.

์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ:

  1. preventDefault(): ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ทจ์†Œํ•ด.
  2. stopPropagation(): ์ด๋ฒคํŠธ์˜ ์ถ”๊ฐ€ ์ „ํŒŒ๋ฅผ ์ค‘์ง€ํ•ด.
  3. stopImmediatePropagation(): ์ด๋ฒคํŠธ์˜ ์ถ”๊ฐ€ ์ „ํŒŒ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ํ˜„์žฌ ์š”์†Œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ด.

์ด๋ฒคํŠธ ๊ฐ์ฒด ์‚ฌ์šฉ ์˜ˆ์ œ:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Event Object Example</title>
        </head>
        <body>
          <button id="myButton">Click me</button>

          <script>
            const button = document.getElementById('myButton');

            button.addEventListener('click', function(event) {
              console.log('Event type:', event.type); // ์ถœ๋ ฅ: click
              console.log('Event target:', event.target); // ์ถœ๋ ฅ: <button id="myButton">Click me</button>
              console.log('Current target:', event.currentTarget); // ์ถœ๋ ฅ: <button id="myButton">Click me</button>
              console.log('Event phase:', event.eventPhase); // ์ถœ๋ ฅ: 2 (ํƒ€๊ฒŸ ๋‹จ๊ณ„)
              console.log('Bubbles:', event.bubbles); // ์ถœ๋ ฅ: true
              console.log('Cancelable:', event.cancelable); // ์ถœ๋ ฅ: true
              console.log('Time stamp:', event.timeStamp); // ์ถœ๋ ฅ: ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์‹œ๊ฐ„
              console.log('Is trusted:', event.isTrusted); // ์ถœ๋ ฅ: true
            });
          </script>
        </body>
      </html>
    
  

6.2. ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ (Mouse Events)

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ๋•Œ ์ƒ์„ฑ๋ผ:

  • click: ํด๋ฆญ ์ด๋ฒคํŠธ
  • dblclick: ๋”๋ธ” ํด๋ฆญ ์ด๋ฒคํŠธ
  • mousedown: ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • mouseup: ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋—„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • mousemove: ๋งˆ์šฐ์Šค ์ด๋™ ์ด๋ฒคํŠธ
  • mouseover: ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • mouseout: ๋งˆ์šฐ์Šค๊ฐ€ ๋‚˜๊ฐˆ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ

์˜ˆ์ œ:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Mouse Events Example</title>
        </head>
        <body>
          <button id="myButton">Click Me</button>
          <script>
            const button = document.getElementById('myButton');

            button.addEventListener('click', function(event) {
              console.log('Button clicked');
              console.log('Event type:', event.type);
              console.log('Target element:', event.target);
            });
          </script>
        </body>
      </html>
    
  

6.3 ๋กœ๋“œ ์ด๋ฒคํŠธ (Load Events)

๋กœ๋“œ ์ด๋ฒคํŠธ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋กœ๋“œ๋ฅผ ์™„๋ฃŒํ•  ๋•Œ ๋ฐœ์ƒํ•ด:

  • load: ๋ฆฌ์†Œ์Šค/ํŽ˜์ด์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • DOMContentLoaded: ์ดˆ๊ธฐ HTML ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋˜๊ณ  ์Šคํƒ€์ผ ์‹œํŠธ, ์ด๋ฏธ์ง€ ๋ฐ ํ•˜์œ„ ํ”„๋ ˆ์ž„์˜ ์™„์ „ํ•œ ๋กœ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ

์˜ˆ์ œ:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Load Events Example</title>
        </head>
        <body>
          <script>
            window.addEventListener('load', function(event) {
              console.log('Window fully loaded');
            });

            document.addEventListener('DOMContentLoaded', function(event) {
              console.log('DOM fully loaded and parsed');
            });
          </script>
        </body>
      </html>
    
  

6.4 ํฌ์ปค์Šค ์ด๋ฒคํŠธ (Focus Events)

ํฌ์ปค์Šค ์ด๋ฒคํŠธ๋Š” ์š”์†Œ๊ฐ€ ํฌ์ปค์Šค๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ์žƒ์„ ๋•Œ ์ƒ์„ฑ๋ผ.

  • focus: ์š”์†Œ๊ฐ€ ํฌ์ปค์Šค๋ฅผ ๋ฐ›์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • blur: ์š”์†Œ๊ฐ€ ํฌ์ปค์Šค๋ฅผ ์žƒ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ

์˜ˆ์ œ:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Focus Events Example</title>
        </head>
        <body>
          <input type="text" id="textInput" placeholder="Type something...">
          <script>
            const input = document.getElementById('textInput');

            input.addEventListener('focus', function(event) {
              console.log('Input field focused');
            });

            input.addEventListener('blur', function(event) {
              console.log('Input field lost focus');
            });
          </script>
        </body>
      </html>
    
  

6.5 ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ (Keyboard Events)

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ์—์„œ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ƒ์„ฑ๋ผ:

  • keydown: ํ‚ค๊ฐ€ ๋ˆŒ๋ ธ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • keyup: ํ‚ค๊ฐ€ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • keypress: ํ‚ค๊ฐ€ ๋ˆŒ๋ฆฌ๊ณ  ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ (๊ตฌ์‹, ์‚ฌ์šฉ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)

์˜ˆ์ œ:

HTML
    
      <html>
        <head>
          <title>Keyboard Events Example</title>
        </head>
        <body>
          <input type="text" id="textInput" placeholder="Type something...">
          <script>
            const input = document.getElementById('textInput');

            input.addEventListener('keydown', function(event) {
              console.log('Key down:', event.key);
            });

            input.addEventListener('keyup', function(event) {
              console.log('Key up:', event.key);
            });
          </script>
        </body>
      </html>
    
  
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION