๋ฌธ์ ๋ชฉ๋ก์ผ๋ก ๋์๊ฐ๊ธฐ
๐ก์ง์์๋ต์ https://github.com/pul8219/TIL
Issues
ํญ์ ์๋ง์ step ์ด์์์ ๋จ๊ฒจ์ฃผ์ธ์. โก๏ธ Issueํญ์ผ๋ก ์ด๋
- ์์ฑ์: Wol-dan (@pul8219)
- ์คํฐ๋ ์ฃผ์ : FrontEnd ๋ฉด์ ์คํฐ๋ https://gitlab.com/siots-study/topics/-/wikis/home
- ๊ณต๋ถ ๋ฒ์: ๋ง์ฐ์ค ์ด๋ฒคํธ
- ๊ธฐํ: 01/09(ํ ) ~ 01/12(ํ)
-
๋ชจ๋ฐ์ผ ์น๋ทฐ์์ ๊ธฐ๋ณธ์ ์ธ ๋์์ ์จ๊ธธ ํ์๊ฐ ์์ -> ์ฐธ๊ณ ์๋ฃ: https://speakerdeck.com/eastroots92/2019-newbiethon-webbyu-sogigi-daejagjeon @JeongShin๋ ๋ฌธ์ ์์ ์๊ฒ๋จ
๐ฌ
โ https://ko.javascript.info/mouse-events-basics ์์ ๋ง์ ๋ด์ฉ์ ์ธ์ฉํ๊ณ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ ๋ฌธ์์ ๋๋ค.
- ๋ง์ฐ์ค ์ด๋ฒคํธ๋ ๋ง์ฐ์ค ๋ฟ๋ง ์๋๋ผ ํธ๋ํฐ, ํ๋ธ๋ฆฟ๊ณผ ๊ฐ์ ์ฅ์น์์๋ ๋ฐ์ํ๋ค.
mousedown
,mouseup
: ์์ ์์์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋๋ฅผ ๋(๋๋ฅธ ๊ทธ ์๊ฐ), ๋ง์ฐ์ค ๋ฒํผ์ ๋๋ฅด๊ณ ์๋ค๊ฐ ๋ ๋(released) ๋ฐ์ (๋๋ค ์ด๋ค ๋ง์ฐ์ค ๋ฒํผ์ด๋ ๋ฐ์ ๊ฐ๋ฅ)mouseover
,mouseout
: ๋ง์ฐ์ค ์ปค์๊ฐ ์์ ๋ฐ์ ์๋ค๊ฐ ์์ ์์ผ๋ก ์์ง์ผ ๋, ์ปค์๊ฐ ์์ ์์ ์๋ค๊ฐ ์์ ๋ฐ์ผ๋ก ์์ง์ผ ๋ ๋ฐ์. ํด๋น ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ ์ฉ๋ ์์์ ์์ ์์์๊ฒ๋ ์ ์ฉ๋จ.mousemove
: ๋ง์ฐ์ค๋ฅผ ์์ ๋ด๋ถ์์ ์ด๋์ํค๋ ๋์ ๋ฐ์click
: ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ์ฌ์ฉํด ์์ ์์์mousedown
์ด๋ฒคํธ์mouseup
์ด๋ฒคํธ๋ฅผ ์ฐ๋ฌ์ ๋ฐ์์ํฌ ๋ ์คํ๋จ(์์๋ฅผ ์ผ์ชฝ ๋ฒํผ์ผ๋ก ๊ณ์ ๋๋ฅด๊ณ ์๊ธฐ๋ง ํ๊ณ ๋ผ์ง ์์ผ๋ฉด click์ ๋ฐ๋ฅธ ๋์์ด ์ด๋ฃจ์ด์ง์ง ์๋ ๊ฒฝํ์ ํด๋ดค์ ๊ฒ)dblclick
: ๋์ผํ ์์๋ฅผ ๋๋ฒ ํด๋ฆญ(click
์ ์๋ฏธ)ํ ๋ ๋ฐ์(๋๋ธ ํด๋ฆญ)contextmenu
: ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ ์ ๋ ๋ฐ์. context menu๊ฐ ํ๋ฉด์ ๋ณด์ด๊ธฐ ์ ์ ๋ฐ์(ํน๋ณํ ๋จ์ถํค๋ฅผ ๋๋ฌ๋ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ ์ ๋์ฒ๋ผ ์ปจํ ์คํธ ๋ฉ๋ด๊ฐ ๋ํ๋๊ฒ ํ ์ ์์ง๋ง ์ด๋contextmenu
๋ผ๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ๋์ผํ์ง ์์)auxclick
: ๋ง์ฐ์ค ์ผ์ชฝ๋ฒํผ(์ฃผ์ ๋ฒํผ)์ ์ ์ธํ ๋ค๋ฅธ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์๋(ex. ์ค๋ฅธ์ชฝ ๋ฒํผ, ํ ๋ฒํผ, ๋ค๋ฅธ ๋งคํฌ๋ก ๋ฒํผ ๋ฑ)select
: text๊ฐ ์ ํ(๋๋๊ทธ)๋์ ๋ ๋์. ์์๊ฐ inputํ๊ทธ์ด๊ณ ํ๊ทธ์ type์ด text, textarea์ผ ๋๋ง ๋์.wheel
: ํ ์ ์๋์ํฌ ๋ ๋ฐ์
์ฐธ๊ณ : https://developer.mozilla.org/en-US/docs/Web/Events#Mouse_events
@eyabc ๋ ๋ฌธ์์์ ์ธ์ฉ
<ul id="test"> <li>item 1</li> <li>item 2</li> <li>item 3</li> </ul>let test = document.getElementById('test'); // mouseenter ๋ ์ค์ง ํ๋ฒ ๋ฐ์ํ๋ค. ์ปค์๊ฐ ul ์ผ๋ก move over ํ ๋ test.addEventListener( 'mouseenter', function (event) { // highlight the mouseenter target event.target.style.color = 'purple'; // reset the color after a short delay setTimeout(function () { event.target.style.color = ''; }, 500); }, false ); // mouseover ๋ ๋งค๋ฒ ๋ฐ์ํ๋ค. ์ปค์๊ฐ li ๋ค๋ก move over ํ ๋๋ง๋ค. // mouseover ์ ํ๊ฒ์ (Element ๋ Element ์ Child) ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. test.addEventListener( 'mouseover', function (event) { // highlight the mouseover target event.target.style.color = 'orange'; // reset the color after a short delay setTimeout(function () { event.target.style.color = ''; }, 500); }, false );
- ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๋ฉด
mousedown
,mouseup
,click
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ ๋ฏ ์ฌ์ฉ์๋ ํ๋์ ๋์์ ํ์ด๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ ์ฌ๋ฌ๊ฐ์ง์ผ ์ ์๋ค. - ์ด๋ ๊ฒ ์ฌ๋ฌ ์ด๋ฒคํธ๊ฐ ์คํ๋ ๋ ์คํ ์์๋ ๋ด๋ถ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
ex)
- ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ ํด๋ฆญ์
mousedown
-mouseup
-click
์์ผ๋ก ์ด๋ฒคํธ ๋ฐ์ - ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ ๋๋ธํด๋ฆญ์
mousedown
-mouseup
-click
-mousedown
-mouseup
-click
-dblclick
์์ผ๋ก ์ด๋ฒคํธ ๋ฐ์ - ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ์
mousedown
-mouseup
-contextmenu
- ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ๋น ๋ฅด๊ฒ ๋ ๋ฒ ๋๋ฅผ์
mousedown
-mouseup
-contextmenu
-mousedown
-mouseup
-contextmenu
(์ฆ ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ธํด๋ฆญ ์ ์ฉ์๋จ)
https://ko.javascript.info/mouse-events-basics#ref-134 ์์ ๋ฐ์ ์์์ ๋ํด ํ ์คํธ ๊ฐ๋ฅ
- ํด๋ฆญ๊ณผ ๊ด๋ จ๋ ์ด๋ฒคํธ๋ ์ ํํ ๋ง์ฐ์ค์ ์ด๋ค ๋ฒํผ์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ์๋ ค์ฃผ๋
button
ํ๋กํผํฐ๋ฅผ ์ง์ํ๋ค. click
์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์,contextmenu
๋ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ ์ ๋ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๊ด๋ จํด์๋button
ํ๋กํผํฐ๋ฅผ ๋ณดํต ์ฌ์ฉํ์ง ์๋๋ค.mousedown
,mouseup
๋ฑ์ ์ด๋ฒคํธ๋ ์ด๋ค ๋ฒํผ์์๋ ๋ฐ์๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํด๋น ์ด๋ฒคํธ ํธ๋ค๋ฌ์event.button
์ ๋ช ์ํด์ผํ๋ค. ๊ทธ๋์ผ ์ด๋ค ๋ฒํผ์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ๋ช ํํ ์ ์ ์๋ค.
๋ฒํผ | event.button |
---|---|
์ผ์ชฝ(์ฃผ์ ๋ฒํผ) | 0 |
๊ฐ์ด๋ฐ(๋ณด์กฐ ๋ฒํผ) | 1 |
์ค๋ฅธ์ชฝ(๋ ๋ฒ์งธ ๋ฒํผ) | 2 |
X1(๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ) | 3 |
X2(์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ) | 4 |
์์
@khw970421 ๋ ๋ฌธ์์์ ์ธ์ฉ
๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด
button
ํ๋กํผํฐ์ ์ซ์๊ฐ์ดp
ํ๊ทธ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
<button id="button" oncontextmenu="event.preventDefault();">
Click here with your mouse...
</button>
<p id="log"></p>
<script>
let button = document.querySelector('#button');
let log = document.querySelector('#log');
button.addEventListener('mouseup', logMouseButton);
function logMouseButton(e) {
if (typeof e === 'object') {
log.textContent = `Unknown button code: ${e.button}`;
}
}
</script>
buttons
ํ๋กํผํฐ: ์ฌ๋ฌ ๊ฐ์ ๋ฒํผ์ ํ๊บผ๋ฒ์ ๋๋ ์ ๋ ํด๋น ๋ฒํผ๋ค์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ ํํ๋ก ์ ์ฅํ๋ ํ๋กํผํฐ
์ฐธ๊ณ : https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
event.which
ํ๋กํผํฐ๋ ์ง์ํ์ง ์๋ ์ค๋๋ ์ฝ๋์ด๋ฏ๋ก ์ฌ์ฉํ์ง ๋ง ๊ฒ
- ๋ง์ฐ์ค ์ด๋ฒคํธ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํจ๊ป ๋๋ฅธ ๋ณด์กฐํค๊ฐ ๋ฌด์์ธ์ง ์๋ ค์ฃผ๋ ํ๋กํผํฐ๋ฅผ ์ง์ํ๋ค.
- ๋ง์ฐ์ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๋์ค์ ์ด๋ค ํค๊ฐ ํจ๊ป ๋๋ฌ์ก๋ค๋ฉด ํด๋น ํค์ ๊ด๋ จ๋ ํ๋กํผํฐ ๊ฐ์ด
true
๊ฐ ๋๋ค.
๋ณด์กฐํค ๋ณ๋ก ์ง์ํ๋ ํ๋กํผํฐ
shiftKey
:Shift
ํคaltKey
:Alt
ํค (MacOS์์ Opt ํค)ctrlKey
:Ctrl
ํคmetaKey
: MacOS์์Cmd
ํค
์์
<button id="button">Alt, Shift ํค๋ฅผ ๋๋ฅธ ์ํ์์ ํด๋ฆญ</button>
<script>
button.onclick = function (event) {
if (event.altKey && event.shiftKey) {
// event.altKey, event.shiftKey ํ๋กํผํฐ์ ๊ฐ์ด ๋๋ค true์ผ ๋ // Alt, Shift ํค๋ฅผ ๋๋ฅธ ์ํ์์ ํด๋ฆญ์ ํ๋ค๋ฉด
alert('Success!');
} else {
alert('Error!');
}
};
</script>
MacOS์์์
Cmd
ํค
Windows์ Linux์ฒ๋ผ MacOS๋ Alt
, Ctrl
, Shift
ํค๋ฅผ ์ง์ํ๊ณ ์ถ๊ฐ๋ก Cmd
ํค๋ฅผ ์ง์ํ๋ค. ์ด ํค์ ํด๋นํ๋ ํ๋กํผํฐ๋ก metaKey
๊ฐ ์๋ค. ์์ฉ ํ๋ก๊ทธ๋จ ๋๋ถ๋ถ์ Windows, Linux์์ ์ฃผ๋ก Ctrl
์ ์ฌ์ฉํด ๋จ์ถํค๋ฅผ ์กฐํฉํ์ง๋ง MacOS๋ Cmd
ํค๋ฅผ ์ฌ์ฉํด ๋จ์ถํค๋ฅผ ์กฐํฉํ๊ณค ํ๋ค. Windows์ Ctrl+Enter
๋ Ctrl+A
๊ฐ MacOS์์ Cmd+Enter
๋ Cmd+A
๋ก ๋๋ฌ์ผ ์ ๋๋ก ๋์ํ๋ค๋ ๋ป์ด๋ค.
๋ฐ๋ผ์ MacOS ์ฌ์ฉ์๋ ์ง์ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ค๋ฉด ์๋ฅผ ๋ค์ด Ctrl
ํค + click
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ํ๋๋ ๋์์ด MacOS์์ Cmd
ํค + click
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋๋ ๋๊ฐ์ด ๋ํ๋๋๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค. MacOS ์ฌ์ฉ์๊ฐ Ctrl
ํค์ ํด๋ฆญ์ ๋์์ ํ๋๋ก ๊ฐ์ ํ ์๋ ์์ง๋ง MacOS์์๋ Ctrl
ํค์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ํจ๊ป ๋๋ฅธ ๊ฒ์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ฅธ ๊ฒ์ผ๋ก ํด์ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. (Windows, Linux์์ click
์ด๋ฒคํธ๋ก ํด์๋๋ ๋์์ด MacOS์์ contextmenu
์ด๋ฒคํธ๋ก ํด์๋๋ ๊ฒ!)
์ด์์ฒด์ ์ข ๋ฅ์ ์๊ด์์ด ์ฌ์ฉ์๊ฐ ๋์ผํ ๊ฒฝํ์ ํ๊ฒ ํ๋ ค๋ฉด ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ์๋ ์์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
if(event.ctrlKey || event.metaKey){ // ctrlKey ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ metaKey ์กฐ๊ฑด๋ ํจ๊ป ๋ฃ์ด์ฃผ๊ธฐ
...
}
๋ชจ๋ฐ์ผ ์ฅ์น
- ์ฌ์ฉ์๊ฐ ํค๋ณด๋๊ฐ ์๋ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋จ์ถํค๋ฅผ ์ง์ํ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ ์์น์ํฌ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ๋ชจ๋ฐ์ผ ์ฅ์น๊ฐ์ด ๊ธฐ๊ธฐ์ ํค๋ณด๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ฅผ ์ง์ํ๋ ๋ฐฉ๋ฒ๋ ๊ณ ๋ คํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ํด์ผํ๋ค.
clientX
: ์ดํ๋ฆฌ์ผ์ด์ ์ viewport๋ด์ ์ํ ์ขํ๋ฅผ ์ ๊ณตํ๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ์ขํ ์์ฑclientY
: ์ดํ๋ฆฌ์ผ์ด์ ์ viewport๋ด์ ์์ง ์ขํ๋ฅผ ์ ๊ณตํ๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ์ขํ ์์ฑ
clientX
์clientY
๋ ํ์ฌ ํ๋ฉด์์ ๋ณด์ฌ์ง๊ณ ์๋ ์น๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ์ผ์ชฝ์ผ๋ก๋ถํฐ, ์๋ก๋ถํฐ ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.ํ์ด์ง๊ฐ ์คํฌ๋กค๋์ด๋ ๊ฐ์ด ๋ณํ์ง ์๋๋ค.
[์ถ๊ฐ] viewport๐ก
์ดํ๋ฆฌ์ผ์ด์ ํ์ฌ ํ๋ฉด์์ ๋ณด์ฌ์ง๊ณ ์๋ ์์ญ(๋ณดํต ์ง์ฌ๊ฐํ)์ ๋ํ๋ด๋ ์ฉ์ด์ด๋ค.
pageX
: ํ์ด์ง ์ฐฝ ์ผ์ชฝ์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ์ขํ ์์ฑpageY
: ํ์ด์ง ์ฐฝ ์์ชฝ์ ๊ธฐ์ค์ผ๋ก ์ผ๋ง๋ ๋จ์ด์ ธ ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ์ขํ ์์ฑ
- ํด๋น html ๋ฌธ์ ์ ์ฒด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ขํ์ด๋ค.
- ํ์ด์ง๋ฅผ ์คํฌ๋กคํ๋ฉด ๊ฐ๋ ๋ณํ๋ค.
- 1๏ธโฃ ๊ธ์ ์์์ ๋ง์ฐ์ค๋ฅผ ๋๋ธํด๋ฆญํ๋ฉด ๊ธ์๊ฐ ์ ํ๋๋ค.
- 2๏ธโฃ ๊ธ์ ์์์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋๋ฅธ ์ฑ ์ปค์๋ฅผ ์ด๋ฆฌ์ ๋ฆฌ ์์ง์ด๋ฉด ๊ธ์๊ฐ ์ ํ(๋๋๊ทธ)๋๋ค.
dblclick
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉดalert
์ฐฝ์ ๋์ฐ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ฌ์ฉ์ ๊ฒฝํ์ ํด์น ์ ์์ด ์ ๋๊ฐ์ง ๋์(1๏ธโฃ, 2๏ธโฃ)์ด ์ผ์ด๋์ง ์๊ฒ ํ๊ณ ์ถ๋ค๋ฉด? ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ์ฉํด์ ํด๊ฒฐํ ์ ์๋ค.(์ฐธ๊ณ )- ๊ทธ ์ค ํ๋๋ก,
mousedown
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ๋ํ๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์์ ๋ง๋ ๋ฐฉ๋ฒ์ด ์๋ค. why? ๊ธ์ ์์ ์์์mousedown
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์์ผ๋ก ๊ธ์๊ฐ ์ ํ๋๊ธฐ ๋๋ฌธ์ด๋ค. (๊ทธ๋ฆฌ๊ณ ์๊น ํ์ตํ๋ฏ ๋๋ธํด๋ฆญ ์ด๋ฒคํธ ๊ณผ์ ์์๋mousedown
์ด๋ฒคํธ๊ฐ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค. ๊ทธ๋์ ๋๋ธํด๋ฆญํ ๋ ๊ธ์๊ฐ ์ ํ๋๋ ์ผ๋ ๋ง์ ์ ์๋ ๊ฒ!) - ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์ ๊ด๋ จ ๋ด์ฉ์ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ
mousedown
์ด๋ฒคํธ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์ ๋ง๊ธฐ ์ ์ฝ๋
<span id="test1">์ด๊ณณ์ ๋๋ธํด๋ฆญ</span>
let test1 = document.getElementById('test1');
test1.addEventListener('dblclick', function () {
// ์์์ ๋๋ธ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด
alert('dblclick'); // alert ์ฐฝ์ ๋์
});
mousedown
์ด๋ฒคํธ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์ ๋ง๋ ์ฝ๋๋ฅผ ์ ์ฉํ ์์
<span id="test1">์ด๊ณณ์ ๋๋ธํด๋ฆญ</span>
let test1 = document.getElementById('test1');
test1.addEventListener('mousedown', function (event) {
event.preventDefault();
});
test1.addEventListener('dblclick', function () {
alert('dblclick');
});
event.preventDefault()
๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์์ ์ทจ์ํ ์ ์๋
event
๊ฐ์ฒด์ ๊ตฌํ๋ ๋ฉ์๋์ด๋ค. ์์ธํ ๋ด์ฉ์ ๋งํฌ ์ฐธ๊ณ
ํน์
...
<b ondblclick="alert('ํด๋ฆญ!')" onmousedown="return false"> ์ด๊ณณ์ ๋๋ธํด๋ฆญ </b>
...
return false;
์ ๊ดํด์๋ ๊ฐ์ ๋งํฌ ์ฐธ๊ณ
mousedown
์ด๋ฒคํธ์ ์๋ฐ๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์์ ๋ง์๊ธฐ ๋๋ฌธ์ ๊ธ์จ๋ฅผ ๋๋ธํด๋ฆญํด๋ ๋จ์ด๊ฐ ์ ํ๋์ง ์๊ณ , ๊ธ์๋ฅผ ๋๋๊ทธํด๋ ๊ธ์๊ฐ ์ ํ๋์ง ์๋๋ค.- ๋ค๋ง
b
ํ๊ทธ๊ฐ ์ฐ์ธ ์์ ์์...
์ ํด๋นํ๋ ๋ถ๋ถ๋ถํฐ ์์ํด ๋๋๊ทธ๋ฅผ ํ๋ฉด ๊ธฐ๋ณธ๋์์ ๋ง์์์๋ ๋ถ๊ตฌํ๊ณ์ด๊ณณ์ ๋๋ธํด๋ฆญ
์ด๋ผ๋ ๊ธ์จ๋ฅผ ํฌํจํ ๊ธ์๋ค์ ์ฌ์ ํ ์ ํ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
[์ถ๊ฐ] ๋ณต์ฌ ๋ง๊ธฐ๐ก
<div oncopy="alert('๋ณต์ฌ๊ฐ ํ์ฉ๋์ง ์์ ์ปจํ ์ธ ์ ๋๋ค.'); return false"> ์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์๊ณ ์ง๊ธ์ ๋น์ ์๊ฒ๋ก...blah blah... </div>ํ๊ทธ ๋ด text๋ฅผ ์ ํํ ํ ๋ณต์ฌํ๋ ค๊ณ ํ๋ฉด
return false
๋ฅผ ์ด์ฉํ์ฌoncopy
์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ๋์์ ๋ง์๋จ๊ธฐ ๋๋ฌธ์ ๋ณต์ฌ๊ฐ ์๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.ํ์ด์ง ์์ค ๋ณด๊ธฐ๋ฅผ ํ ์ ์๋ ์ฌ์ฉ์๋ผ๋ฉด ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์์ฉ์ด ์๊ฒ ์ง๋ง ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์์ค ๋ณด๊ธฐ๋ฅผ ํ ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๋ฌด๋จ ๋ณต์ ๋ฅผ ์ด๋์ ๋ ๋ง์ ์ ์๋ค.
-
๋ง์ฐ์ค ์ด๋ฒคํธ https://ko.javascript.info/mouse-events-basics
-
[Javascript] Mouse Events ์ ๋ฆฌ https://kangth97.tistory.com/4
-
MDN
- ๋ง์ฐ์ค ์ด๋ฒคํธ ์ข ๋ฅ https://developer.mozilla.org/en-US/docs/Web/Events#Mouse_events
- KeyboardEvent.metaKey https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey