#3 JS로 브라우저에 HTML과 상호작용하기
이벤트
- event : console.dir 통해 요소 객체의 안을 살펴보면 on으로 시작하는 것들 있음.
- 클릭할 때, 마우스 올릴 때, 입력 끝낼 때, 이름 적을 때, 엔터 누를 때, 와이파이 해제될 때 등.
- object.addEventListener("event") : 이런 모든 이벤트들을 자바스트립트가 감지할 수 있음.
- click 이벤트
- 클릭했을 때 동작할 요소를 선택함.
- const title = document.querySelector("div.hello:first-chile h1");
- 실행할 동작을 함수로 정의해줌.
- function handleTitleClick() {
console.log("title was clicked");
}
- function handleTitleClick() {
- 이 함수를 이벤트 감지 함수의 두번째 인자로 전달.
- title.addEventListener("click", handleTitleClick);
- 자바스크립트에 함수 이름을 넘겨줘서 사람이 직접 () 써서 실행하지 않고, 유저가 클릭할 때 자바스크립트가 대신 실행버튼을 누를 수 있게 함.
- 클릭했을 때 동작할 요소를 선택함.
- event 찾기
- "h1 html element mdn" 검색 > "Web APIs" 적힌 페이지 접속 : html element에 대한 내용 중 event.
- console.dir : 쭉 보면 "on"으로 시작하는 property가 event listener.
- mouse 관련 event
- mouseenter : 요소 위에 마우스가 올라가고 클릭은 하지 않은 상태.
- mouseleave : 마우스가 올라왔다가 떠날 때
- 이벤트 감지하는 또 다른 방법 : on이벤트명 property에 event listener 할당
- title.addEventListener("click", handleTitleClick);
→ title.onclick = handleTitleClick; - addEventListener의 장점 : removeEventListener 통해 event listner 제거 가능.
- title.addEventListener("click", handleTitleClick);
- html 요소 말고 window 관련 이벤트
- resize
- function handleWindowResize() {
document.body.style.backgroundColor = "tomato";
}
window.addEventListener("resize", handleWindowResize); - document처럼 window도 기본 제공되는(?) 객체
- document.body : document에서 가져올 수 있는 것들 중 하나. body는 특별해서 바로 호출 가능. 마찬가지로 document.title의 title은 변수 이름으로 사용한 "title"이 아니라 html 코드 내의 <title>.
- function handleWindowResize() {
- wifi : offline, online
- [문제] 랜선 연결해놔서 테스트 불가
- 클립보드 : copy(복사했을 때)
- resize
'TIL' 카테고리의 다른 글
[TIL-44] 노마드코더 크롬앱(JS) 클론코딩 #4.0~#4.3 (0) | 2021.10.24 |
---|---|
[TIL-43] 노마드코더 크롬앱(JS) 클론코딩 #3.6~#3.8 (0) | 2021.10.22 |
[TIL-41] 노마드코더 크롬앱(JS) 클론코딩 #3.0~#3.2 (0) | 2021.10.20 |
[TIL-40] 노마드코더 크롬앱(JS) 클론코딩 #2.11~#2.16 (0) | 2021.10.19 |
[TIL] 노마드코더 바닐라 JS 챌린지 DAY 1~DAY 11 (0) | 2021.10.19 |