Dev.Op
Yollow ๐Ÿ“š
Dev.Op
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (701)
    • ์œ ์ตํ•˜์…จ๋‹ค๋ฉด ๊ด‘๊ณ  ํ•œ๋ฒˆ๋งŒ ํด๋ฆญ ๋ถ€ํƒ๋“œ๋ฆด๊ฒŒ์š”~ (0)
    • ---------------------------.. (0)
    • Stock (1)
      • ์Šˆํผ๋งˆ์ดํฌ๋กœ์ปดํ“จํ„ฐ (2)
    • ๐Ÿง์ „๊ธฐ์ฐจ (72)
      • ๐Ÿ„lg์—๋„ˆ์ง€์†”๋ฃจ์…˜ (0)
      • ๐ŸŠํ˜„๋Œ€์ž๋™์ฐจ (0)
    • ๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด (243)
      • ๐Ÿ’ปpython (85)
      • โž•C & C++ (1)
      • โ˜•๏ธTableau (32)
      • ๐Ÿ‘‹SQL & MySQL (20)
      • ๐ŸฌHTML & CSS (14)
      • ๐Ÿ“—JavaScript (31)
      • ๐Ÿ“˜Pspice & Excel (2)
      • ๐Ÿ“•Matlab & COMSOL & CATIA (6)
      • ๐Ÿ“™java & Servlete & JSP (29)
      • ๐Ÿ““Raspberry PI 4 (5)
      • ๐Ÿ”จAnsys (2)
      • DJango (0)
      • Flutter (3)
      • Typescript (0)
      • ๐Ÿ†Vue (5)
      • ๐Ÿ‹Docker (1)
    • ๐Ÿ“‹์ฑ„์šฉ๊ณต๊ณ  (0)
    • ๐Ÿ“WEB & ML & DL ํ”„๋กœ์ ํŠธ (27)
      • ๐ŸŒต2์ฐจ ํ”„๋กœ์ ํŠธ(LG) (9)
    • ๐Ÿงฉ์ผ์ƒ (89)
      • ๐ŸŒค์ฝ”๋”ฉ ๊ณต๋ถ€ ์ผ์ง€ (1)
      • ๐Ÿšด์ž์ „๊ฑฐ (5)
      • ๐Ÿ“ฐํ…Œํฌ (20)
      • ๐ŸฆFood & Cafe (5)
      • ๐Ÿ’‰์˜์–ด ๋„์ ์ด๊ธฐ (5)
      • โšก๋ฐœ์ „์†Œ (6)
      • ๐Ÿ“š๋…์„œ (1)
      • ๐Ÿ›ซ์—ฌํ–‰ (2)
      • ๐Ÿ“ˆ๋ธ”๋กœ๊ทธ๋งˆ์ผ€ํŒ… (6)
    • ๐ŸŒ๊ธˆ์œต (37)
    • ๐ŸŽจ์ทจ์—…End (16)
    • ๐Ÿ‘‹์ž๊ฒฉ์ฆ (150)
      • ๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž (12)
      • ๐Ÿ”Œ์ „๊ธฐ๊ธฐ์‚ฌ (116)
      • ๐Ÿข์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (7)
      • ๐ŸŒŽADsP(๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€) (10)
      • ๐Ÿš™1์ข… ๋Œ€ํ˜• ์šด์ „ ๋ฉดํ—ˆ (1)
      • โญTableau Desktop Specialist (2)
    • ๐Ÿฅ‡๊ณต๋Œ€์ด๊ฑฐ์ €๊ฒƒ(๋ง‰ํ•™๊ธฐ) (24)
      • ๐Ÿ“๊ณตํ•™์ˆ˜ํ•™ 2 (1)
      • ๐Ÿบ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ์‹ค์Šต (4)
      • ๐ŸŒCAE (10)
      • โœˆ๏ธ์ž๋™์ฐจ๊ณตํ•™์‹คํ—˜2 (0)
      • ๐Ÿšข์œ ์ฒด์—ญํ•™ (6)
      • ๐Ÿš—ํ˜„๋Œ€์ฐจ H-๋ชจ๋นŒ๋ฆฌํ‹ฐ ํด๋ž˜์Šค 1๊ธฐ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    ๊ณต์ง€์‚ฌํ•ญ

    • Vue, Typescript, React, Tableau,โ‹ฏ
    • ์ง„์ธ์‚ฌ๋Œ€์ฒœ๋ช…(็›กไบบไบ‹ๅพ…ๅคฉๅ‘ฝ)

    ์ธ๊ธฐ ๊ธ€

    ํƒœ๊ทธ

    • ์ „๊ธฐ์ฐจ ๋ณด์กฐ๊ธˆ 2021
    • ์ „๊ธฐ์ฐจ
    • ์œ ์ฒด์—ญํ•™
    • html
    • SMCI
    • ์—๋””์Šจev
    • css
    • Python
    • ADsP
    • lgํ™”ํ•™
    • ์ง๋ ฌ๋ฆฌ์•กํ„ฐ
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์•„์ด์˜ค๋‹‰5
    • ์—”๋น„๋””์•„
    • fluid mechanics
    • ๋ธŒ๋ฃจํŠธํฌ์Šค
    • ipad dual monitor
    • LG์—๋„ˆ์ง€์†”๋ฃจ์…˜
    • ๋น…๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€
    • rdfr
    • ๋””์นด๋ฅด๊ณ 
    • ๋น…๋ฐ์ดํ„ฐ
    • ๋ฐฑ์ค€
    • ๋ถ€๋“ฑ๋ฅ 
    • ํ…Œ์Šฌ๋ผ
    • vue btn
    • ์—”์†”
    • ์—…๋น„ํŠธ
    • ์‚ผ์„ฑ์ „์ž
    • ์ž๋ฐ”

    ์ตœ๊ทผ ๋Œ“๊ธ€

    ์ตœ๊ทผ ๊ธ€

    ํ‹ฐ์Šคํ† ๋ฆฌ

    hELLO ยท Designed By ์ •์ƒ์šฐ.
    Dev.Op

    Yollow ๐Ÿ“š

    ๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ“—JavaScript

    [f/e] ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง

    2023. 4. 4. 20:15
    ๋ฐ˜์‘ํ˜•

    1. ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง

    ์บก์ณ๋ง(capturing)์€ ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ€์žฅ ์ƒ์œ„์˜ ๋ถ€๋ชจ ์š”์†Œ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์‹ค์ œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๊นŒ์ง€ ๋‚ด๋ ค์˜ค๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ–ˆ๋”๋ผ๋„, ์ƒ์œ„ ์š”์†Œ์— ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    ๋ฐ˜๋ฉด์— ๋ฒ„๋ธ”๋ง(bubbling)์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ƒ์œ„ ์š”์†Œ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋˜๊ณ , ๊ทธ ํ›„์— ์ƒ์œ„ ์š”์†Œ์— ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

     

    ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ, ์„ธ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ด๋ฒคํŠธ ์ „ํŒŒ ๋ฐฉ์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ ์บก์ณ๋ง์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

     

    document.getElementById("myElement").addEventListener("click", myFunction, true);javascript Copy code document.getElementById("myElement").addEventListener("click", myFunction, false);



    ๋”ฐ๋ผ์„œ, ์ด๋ฒคํŠธ ์ „ํŒŒ ๋ฐฉ์‹์„ ์„ค์ •ํ•˜์—ฌ ์ ์ ˆํ•œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜๋ฉด์— ๋ฒ„๋ธ”๋ง์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋ ค๋ฉด ์„ธ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ false๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    javascript HTML์—์„œ ํด๋ฆญ ์ด๋ฒคํŠธ๋Š” ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ๋ถ€ํ„ฐ ์ƒ์œ„ ์š”์†Œ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ์ „ํŒŒ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ธ ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

    2. ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ๋ง‰๋Š” ๋ฐฉ๋ฒ•

     

    event.stopPropagation()์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    function myFunction(event) {
      event.stopPropagation();
      // ์ด๋ฒคํŠธ ์ „ํŒŒ๋ฅผ ๋ง‰๋Š” ์ฝ”๋“œ
    }
    
    
    const $a = document.querySelector('a')
    
    $a.addEventListener('click', (event) => {
      event.preventDefault();
    });
    
    

     

     

    3. eventPhase()

    Event.CAPTURING_PHASE // ์บก์ณ๋ง ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ
    Event.AT_TARGET // ์ด๋ฒคํŠธ ๋Œ€์ƒ ์š”์†Œ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ
    Event.BUBBLING_PHASE // ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ
    
    

    ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•˜์—ฌ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์ฝ”๋“œ๋Š” eventPhase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๊ฐ€ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋งŒ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.์œ„ ์ฝ”๋“œ์—์„œ event.eventPhase === Event.BUBBLING_PHASE ์กฐ๊ฑด์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ฐธ์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„์—์„œ๋งŒ console.log๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    const myButton = document.getElementById("myButton");
    myButton.addEventListener("click", function(event) {
    if (event.eventPhase === Event.CAPTURING_PHASE) {
    console.log("button clicked in capturing phase");
    }
    }, true);
    
    

    ์œ„ ์ฝ”๋“œ๋Š” ์ด๋ฒคํŠธ ์บก์ณ๋ง ๋‹จ๊ณ„์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ eventPhase๊ฐ€ Event.CAPTURING_PHASE์ธ ๊ฒฝ์šฐ์—๋งŒ console.log๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

     

    ๋˜ํ•œ, ์ด๋ฒคํŠธ ์บก์ณ๋ง ๋‹จ๊ณ„์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ true๋ฅผ ์ „๋‹ฌํ•˜์—ฌ addEventListener๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ eventPhase๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

     

    const myButton = document.getElementById("myButton"); myButton.addEventListener("click", function(event) { if (event.eventPhase === Event.BUBBLING_PHASE) { console.log("button clicked in bubbling phase"); } });

     

    eventPhase ๋ฉ”์†Œ๋“œ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ํ˜„์žฌ ์–ด๋А ๋‹จ๊ณ„(์บก์ณ๋ง ๋‹จ๊ณ„, ๋Œ€์ƒ ์š”์†Œ ๋‹จ๊ณ„, ๋ฒ„๋ธ”๋ง ๋‹จ๊ณ„)์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ์ˆ˜๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. eventPhase ์ƒ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•
    ์ €์ž‘์žํ‘œ์‹œ

    '๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด > ๐Ÿ“—JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    ๋น„๋™๊ธฐ API ์ฒ˜๋ฆฌ  (0) 2023.01.21
    [webpack-dev-server] ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ”๋กœ ๋ฐ˜์˜(js)  (0) 2023.01.11
    [Node.js] express ์™€ cors ์‚ฌ์šฉํ•ด์„œ API ๋งŒ๋“ค๊ธฐ  (0) 2022.12.19
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ   (0) 2022.11.29
    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] Math ํ•จ์ˆ˜ ์ด์šฉํ•˜์—ฌ ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2022.11.08
      '๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ“—JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
      • ๋น„๋™๊ธฐ API ์ฒ˜๋ฆฌ
      • [webpack-dev-server] ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ”๋กœ ๋ฐ˜์˜(js)
      • [Node.js] express ์™€ cors ์‚ฌ์šฉํ•ด์„œ API ๋งŒ๋“ค๊ธฐ
      • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
      Dev.Op
      Dev.Op
      Interest: CS, Drive

      ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”