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

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€/JavaScript

[ex13~14] Mouse Event, Key Event

ex13

 

Mouse Event, ๋งˆ์šฐ์Šค ๊ด€๋ จ ์ด๋ฒคํŠธ

- onmouseXXX

 

1. onmouseover(= onmouseenter)
    - ํ•ด๋‹น ๊ฐ์ฒด์˜ ์˜์—ญ์— ๋งˆ์šฐ์Šค(์ปค์„œ)๊ฐ€ ์ง„์ž…ํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒ

2. onmouseout(= onmouseleave)
    - ํ•ด๋‹น ๊ฐ์ฒด์˜ ์˜์—ญ์— ๋งˆ์šฐ์Šค(์ปค์„œ)๊ฐ€ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒ

	<script>
        function message(txt) {
            var now = new Date();
            txt1.value = txt + '-' + now.toLocaleTimeString() + '\r\n' + txt1.value; /* ๋ˆ„์  */
        }

        txt1.onmouseover = m1;
        function m1() {
            message('mouseover');
            window.document.body.bgColor = 'gold';
        }

        txt1.onmouseout = m2;
        function m2() {
            message('mouseout');
            window.document.body.bgColor = 'white';
        }
    </script>

 

ํ™”๋ฉด

๋”๋ณด๊ธฐ
Document

๋งˆ์šฐ์Šค ๊ด€๋ จ ์ด๋ฒคํŠธ

 

3. onmousedown

- ํ•ด๋‹น ๊ฐ์ฒด์˜ ์˜์—ญ์—์„œ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒ

 

-๋งˆ์šฐ์Šค ์–ด๋–ค ๋ฒ„ํŠผ?

 event.buttons

์™ผ์ชฝ(1), ์˜ค๋ฅธ์ชฝ(2), ์™ผ์ชฝ+์˜ค๋ฅธ์ชฝ(3), ํœ ๋ฒ„ํŠผ(4)

 

-๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ

1. x, y (์ž˜์•ˆ์”€)
  - ๋ฌธ์„œ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€
  - ๋น„ํ‘œ์ค€(MS-IE) > ๋น„๊ถŒ์žฅ

2. clientX, clientY (*****)
  - ๋ฌธ์„œ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€
  - ํ‘œ์ค€ > ๊ถŒ์žฅ
  - CSS > position: absolute;์™€ ๋น„์Šท > ์—ฎ์–ด์„œ ์ œ์ž‘
            
3. screenX, screenY (์ž˜์•ˆ์”€)

  - ๋ชจ๋‹ˆํ„ฐ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€


4. offsetX, offsetY (*****)

  - ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€

  - ๋‚˜ ์ž์‹ ์ด ๊ธฐ์ค€

  - CSS > position: relative; ์™€ ๋น„์Šท

 

4. onmouseup
- ํ•ด๋‹น ๊ฐ์ฒด์˜ ์˜์—ญ์—์„œ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๋–ผ๋Š” ์ˆœ๊ฐ„ ๋ฐœ์ƒ

	<script>
        function message(txt) {
            var now = new Date();
            txt1.value = txt + '-' + now.toLocaleTimeString() + '\r\n' + txt1.value; /* ๋ˆ„์  */
        }

        txt1.onmouseover = m1;
        function m1() {
            //message('mouseover');
            //window.document.body.bgColor = 'gold';
        }

        txt1.onmouseout = m2;
        function m2() {
            //message('mouseout');
            //window.document.body.bgColor = 'white';
        }

        txt1.onmousedown = m3;
        function m3() {
            // message('mousedown');
            // window.document.body.bgColor = 'tomato';

            //๋งˆ์šฐ์Šค ์–ด๋–ค ๋ฒ„ํŠผ?
            //event.buttons

            //์™ผ์ชฝ(1), ์˜ค๋ฅธ์ชฝ(2), ์™ผ์ชฝ+์˜ค๋ฅธ์ชฝ(3)
            // message(event.buttons);

            // if (event.buttons == 2) {
            //      alert('์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ ํด๋ฆญ ๊ธˆ์ง€!!!');
            // }

            //๋งˆ์šฐ์Šค ์ปค์„œ ์ขŒํ‘œ
            //1. x, y
            //  - ๋ฌธ์„œ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€
            //  - ๋น„ํ‘œ์ค€(MS-IE) > ๋น„๊ถŒ์žฅ

            //2. clientX, clientY *****
            //  - ๋ฌธ์„œ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€
            //  - ํ‘œ์ค€ > ๊ถŒ์žฅ
            //  - CSS > position: absolute;์™€ ๋น„์Šท > ์—ฎ์–ด์„œ ์ œ์ž‘

            //3. screenX, screenY (๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์›€ > ์ž˜ ์•ˆ์”€)
            //  - ๋ชจ๋‹ˆํ„ฐ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€

            //4. offsetX, offsetY *****
            //  - ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์ขŒ์ธก ์ƒ๋‹จ์„ ๊ธฐ์ค€
            //  - ๋‚˜ ์ž์‹ ์ด ๊ธฐ์ค€
            //  - CSS > position: relative; ์™€ ๋น„์Šท

            // message(event.x + ',' + event.y)
            // message(event.clientX + ',' + event.clientY);
            //message(event.screenX + ',' + event.screenY);
            //message(event.offsetX + ',' + event.offsetY);
        }

        txt1.onmouseup = m4;
        function m4() {
            // message('mouseup');
            // window.document.body.bgColor = 'white';
        }

    </script>

 

ํ™”๋ฉด

๋”๋ณด๊ธฐ
Document

๋งˆ์šฐ์Šค ๊ด€๋ จ ์ด๋ฒคํŠธ

 

5. onmousemove
- ํ•ด๋‹น ๊ฐ์ฒด์˜ ์˜์—ญ์—์„œ ๋งˆ์šฐ์Šค๊ฐ€ ์›€์ง์ผ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒ

<script>
    txt1.onmousemove = m5;
    function m5() {
        // message('mousemove');
    }
</script>

 

*** onclick

- ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ(X) / ํ‚ค๋ณด๋“œ ๋“ฑ์œผ๋กœ๋„ ํด๋ฆญ ๊ฐ€๋Šฅ

- onclick ๋‚ด์—์„œ๋Š” ๋งˆ์šฐ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค.
- ์–ด๋–ค ๋ฒ„ํŠผ? ์ขŒํ‘œ? > ์ •์˜ ๋ถˆ๊ฐ€๋Šฅ


ex14

 

Key Event, ํ‚ค ์ด๋ฒคํŠธ

- onkeyXXX
- ํฌ์ปค์Šค๋ฅผ ๊ฐ€์ง€๋Š” ํƒœ๊ทธ์—์„œ๋งŒ ๋ฐœ์ƒ(ํ…์ŠคํŠธ ๋ฐ•์Šค, ์ฒดํฌ ๋ฐ•์Šค ๋“ฑ)

- ๋ฐœ์ƒ ์ˆœ์„œ: keydown > keypress > keyup

 

ํ‰์ƒ์‹œ ํ‚ค ์ด๋ฒคํŠธ > keydown
ํŠน๋ณ„ํžˆ ๋ˆ„๋ฅธ ํ‚ค๊ฐ€ ๊ด€์—ฌ๋œ ์ž‘์—… > keyup

 

1. onkeydown
    - ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐœ์ƒ

    - ๋ฌธ์ž์— ๋ฐ˜์‘ํ•˜๋Š” ์ด๋ฒคํŠธ(X) > ์–ด๋–ค ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€(X)
    - ๋ฌผ๋ฆฌํ‚ค์— ๋ฐ˜์‘ํ•˜๋Š” ์ด๋ฒคํŠธ > ์–ด๋–ค ํ‚ค๋ฅผ ๋ˆŒ๋ €๋Š”์ง€(O)

    - ํ‚ค๋ณด๋“œ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํ‚ค์— ๋ฐ˜์‘(******)

    - ๋ฐฉ๊ธˆ ์ž…๋ ฅํ•œ ๋ฌธ์ž๋Š” ํ•„์š”์—†์„ ๋•Œ ์‚ฌ์šฉ!!

2. onkeyup
    - ํ‚ค๋ฅผ ๋—์„ ๋•Œ ๋ฐœ์ƒ

    - ๋ฌผ๋ฆฌํ‚ค ๋ฐ˜์‘

    - ๋ฐฉ๊ธˆ ์ž…๋ ฅํ•œ ๋ฌธ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ!!

3. onkeypress(์ž˜ ์‚ฌ์šฉ ์•ˆํ•จ)
    - ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐœ์ƒ

    - ๋ฌธ์ž์— ๋ฐ˜์‘ํ•˜๋Š” ์ด๋ฒคํŠธ(O)
    - ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ํ‚ค๋Š” ๋ฐ˜์‘ ์•ˆํ•จ(*****) 

 

<script>
        txt1.onkeydown = m1;
        txt1.onkeyup = m2;
        txt1.onkeypress = m3;

        function m1(evt) {
            // console.log('keydown');

            //event.keyCode
            // ๋น„ํ‘œ์ค€ ๋ฐฉ๋ฒ• 
            // console.log(event.keyCode);

            // ํ‘œ์ค€ ๋ฐฉ๋ฒ• > ๋งค๊ฐœ๋ณ€์ˆ˜
            // console.log(evt.keyCode);

            //๋ฐฉํ–ฅํ‚ค
            //- ์ขŒ(37), ์ƒ(38), ์šฐ(39), ํ•˜(40)
            // if (evt.keyCode == 37) {
            //     txt3.cols--;
            // } else if (evt.keyCode == 39) {
            //     txt3.cols++;
            // } else if (evt.keyCode == 38) {
            //     txt3.rows--;
            // } else if (evt.keyCode == 40) {
            //     txt3.rows++;
            // }

            // ์ฒซ๋ฒˆ์งธ ํ…์ŠคํŠธ ๋ฐ•์Šค ๊ฐ’์„ ๋‘๋ฒˆ์งธ ๋ฐ•์Šค์— ๋ณต์‚ฌ
            // keydown > ํ•œ๋ฐ•์ž ๋А๋ฆผ
            //txt2.value = txt1.value;
        }
        function m2() {
            // console.log('keyup');
            // console.log(event.keyCode); 

            // keyup > ๋ฐ”๋กœ ์ ์šฉ๋จ
            //txt2.value = txt1.value;
        }
        function m3() {
            // console.log('keypress');
            // console.log(event.keyCode);
        }
</script>

 

 

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€ > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ex17] window  (0) 2023.04.24
[ex15~16] Attribute, images  (0) 2023.04.21
[ex11~] BOM, event  (0) 2023.04.21
[ex09~10] Date, Array  (0) 2023.04.21
[ex06~08] scope, casting, string  (0) 2023.04.21