
์ค๋์ Javascript๋ฅผ ํ์ฉํ์ฌ ์๊ตฌ๋๋ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ ์ฐ์ต์ ํด๋ณด์๋ค. ์๊ตฌ๋ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
โ The text of the title should change when the mouse is on top of it.
โ The text of the title should change when the mouse is leaves it.
โ When the window is resized the title should change.
โ On right click the title should also change.
โ The colors of the title should come from a color from the colors array.
โ DO NOT CHANGE .css, or .html files.
โ ALL function handlers should be INSIDE of "superEventHandler"
ํด๋น ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋์ถํ๊ธฐ ์ํ์ฌ, event handler๋ค์ ํ๊ณณ์ ์ ์ฅํ object์ธ superEventHandler๋ฅผ ์ ์ธํด์ฃผ๊ณ , ์์๋ค์ ์ ์ฅํ colors array๋ฅผ ์ ์ธํด ์ฃผ์๋ค. ๋ํ, ์ด๋ฒคํธ ๋ฐ์์ ๋ฐ๋ผ ํ
์คํธ์ ๋ณํ๊ฐ ์ฃผ์ด์ง <h2>๋ document.querySelector("h2")๋ฅผ ํตํด title์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ธํด์ฃผ์๊ณ , ๊ฐ๊ฐ์ ์ด๋ฒคํธ๋ MDN Javascript Event๋ฅผ ์ฐธ์กฐํ์๋ค.
๊ฐ์ฅ ๋จผ์ ๊ตฌํํ ๊ฒ์ "mouseenter" ์ด๋ฒคํธ ๋ฐ์์, title์ ์์๊ณผ ํ
์คํธ๋ฅผ ๋ฐ๊พธ๋๋ก ํ๋ eventHandler์ด๋ค.
const superEventHandler = {};
๋ก ๊ตฌ์ฑ๋์ด์๋ ํ์ฌ์ superEventHandler ๊ฐ์ฒด์ ํ์ ํจ์๋ก, handleMouseEnter๋ฅผ ์ ์ธํ๊ณ , ๋ด์ฉ์ ์๋์ ๊ฐ์ด ์ง์ ํด์ฃผ์๋ค.
const superEventHandler = {
handleMouseEnter: function (event) {
title.innerText = "The mouse is here!";
title.style.color = colors[0];
}
};
์ดํ ์ด event handler๋ฅผ ์ํ๋ ๊ฐ์ฒด์ ์ถ๊ฐํด์ฃผ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ๋๋๋ฐ, ๋ง์ฐ์ค๊ฐ ์ฌ๋ผ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์ถ์ ๊ฐ์ฒด๋ title์ด๊ธฐ ๋๋ฌธ์, ์ด ๊ฐ์ฒด์ ์ถ๊ฐํ๋ค.
title.addEventListener("mouseenter", superEventHandler.handleMouseEnter);
addEventListener์ ํน์ฑ์ ๋๋ฒ์งธ ์ธ์๋ก ์์ผํ๋ ํจ์์, ์ธ์๋ก์ ๋ฐ์ํ event๋ฅผ ์๋์ผ๋ก ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์, superEventHandler์ handleMouseEnter์ ๋ฐ๋ก ์ธ์๋ฅผ ์ ํด์ฃผ์ง ์์๋ ์ ๋ฌ๋๋ค.
"mouseleave"์ ๊ฒฝ์ฐ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์งํํด์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ค.
์ง๊ธ๊น์ง์ event listener๋ค์ title์ ์ถ๊ฐ๋์ด, title์์ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ์๋ค. ํ์ง๋ง ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํ ๋ ๋ฐ์ํ๋ event์ธ "resize"๋ window์ event listener๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ์ ์์ ์ผ๋ก ๋ฐ์ํ๋ค. ๋ฐ๋ผ์,
handleResize: function (event) {
title.innerText = "You just resized!";
title.style.color = colors[2];
},
๋ฅผ superEventHandler์ ์ถ๊ฐํด์ฃผ๊ณ ,
window.addEventListener("resize", superEventHandler.handleResize);
์์ ๊ฐ์ด event listener๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด, ์ฌ์ด์ฆ๋ฅผ ๋ณํํ ๋๋ง๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ฉด์ ์ฐํด๋ฆญ์ ๋ฐ์ํ๋ "contextmenu"๋ element ๋ง๋ค ์ง์ ํ ์ ์๊ณ , ๋ํ์ ์ธ ์ฌ์ฉ ์์๋ก ์ฐํด๋ฆญ์ ๋ชปํ๊ฒ ํ๋ ๊ธฐ๋ฅ์ด ์๋ค. ํ์ง๋ง, ์ด ์ฌ์ดํธ์ ํน์ element์ contextmenu๋ฅผ ์ค์ ํ๋ฉด, ํด๋น element์์๋ง ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง๋ง, window์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด, ์ฐฝ์ ์ด๋๊ณณ์์ ์ฐํด๋ฆญ์ ํ๋๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
