윈도우 객체
1. 브라우저 창 자체를 나타내는 객체
2. window 객체는 js에서 최상위 객체로 DOM, BOM으로 분류된다.
- DOM(Document Object Model) : html 자체를 나타내는 객체 (document.get~)
- BOM(Browser Object Model) : location, history, screen, navigator -> 페이지 간 이동
* window 객체는 창 자체를 나타내고 있으므로 브라우저 창 내에서 어디서든 접근 가능
즉, window 객체의 속성과 기능을 호출 시 window. 을 붙이지 않아도 호출 가능하다.
ex) window. alert() == alert()
window.setTimeout(함수, 지연시간ms)
지정된 지연시간 후 함수를 실행하게 만드는 window 객체 함수
* 시간과 관련한 함수는 비동기이다.(코드 인식은 순서대로, 수행은 동시에)
const btn1 = document.getElementById("btn1")
btn1.addEventListener("click", function(){
// 1. 클릭 시 변경 = 지연시간 0초
this.style.backgroundColor = "pink"
// 2. 3초 후 노란색으로 변경
window.setTimeout(function(){
btn1.style.backgroundColor = "yellow"
}, 3000)
// 2. 6초 후 빨간색으로 변경
window.setTimeout(function(){
btn1.style.backgroundColor = "red"
}, 6000)
// 2. 9초 후 파란색으로 변경
window.setTimeout(function(){
btn1.style.backgroundColor = "blue"
}, 9000)
})
클릭-> (분홍색) -3초 후-> (노란색) -6초 후-> (빨간색) -9초 후-> (파란색)
으로 변경되는 것이 아니라 클릭을 한 순간 모든 함수들이 동시에 수행된다.
(분홍색) 클릭
(노란색) 3초
(빨간색) 6초
(파란색) 9초
window.setInverval(함수, 지연시간ms)
지정된 지연시간마다 함수를 실행, 첫 실행도 지연시간 후에 진행
응용: 시계 만들기
// 1. 현재 시간을 반환하는 함수 만들기
function currentTime() {
// 1) 현재 시간 정보 저장할 객체 생성
const now = new Date()
let hour = now.getHours()
let min = now.getMinutes()
let sec = now.getSeconds()
// 2) 얻어온 값을 두자리로 맞춤 ex) 04 : 11 : 09
if(hour < 10) hour = "0" + hour
if(min < 10) min = "0" + min
if(sec < 10) sec = "0" + sec
return `${hour} : ${min} : ${sec}`
}
// 2. 페이지가 로딩되면 #clock에 현재 시간 출력
// const clock = document.getElementById("clock")
// clock.innerText = currentTime()
// 3. 페이지 로딩 시 1초마다 시간이 변경되도록 출력
const interval = window.setInterval(function(){
clock.innerText = currentTime()
}, 1000)
// 4. stop 버튼 누르면 시계 멈추게 하기
document.getElementById("stop").addEventListener("click", function(){
window.clearInterval(interval)
})
window.open("url", "팝업창 이름", "팝업창 특성(옵션)")
1. url : 새 창에서 요청할 url
2. 팝업창 이름
- 사용자 임의 지정: 새 창의 이름 지정
- _blank : 새 탭(기본값)
- _self : 현재 탭
- _parent : 부모 페이지
- _top: 최상위 페이지
3. 특성(옵션)
- popup: 최소한의 팝업창 사용
- width 혹은 innerWidth : 스크롤 막대를 포함한 콘텐츠 영역의 너비(최소 필수 값: 100)
- height 혹은 innerHeight : 스크롤 막대를 포함한 콘텐츠 영역의 높이(최소 필수 값:100)
- left 혹은 screenX : 새 창이 생성될 사용자의 운영체제에서 정의한 대로 작업영역의 왼쪽에서 픽셀 단위로 거리 지정
- right 혹은 screenY : 새 창이 생성될 사용자의 운영체제에서 정의한 대로 작업영역의 오른쪽에서 픽셀 단위로 거리 지정
const pop1 = document.getElementById("pop1")
const pop2 = document.getElementById("pop2")
const pop3 = document.getElementById("pop3")
pop1.addEventListener("click", function(){
// 1. 새 탭에서 열기(기본값)
window.open("https://dvcoding.tistory.com/")
})
pop2.addEventListener("click", function(){
// 2. 최소한의 형태로 열기
window.open("https://dvcoding.tistory.com/","_blank", "popup")
})
pop3.addEventListener("click", function(){
// 3. 옵션 지정
// 작성 방법: "K=V, K=V, K=V", 크기단위X(px고정)
const options = "width = 400, height = 500, top=50, left=400"
window.open("https://dvcoding.tistory.com/", "popTistory", options)
})
🥸 실습: 팝업창으로 정보 보내고 정보 받아오기
// 부모창 JS : 팝업창 열기
document.getElementById("btn1").addEventListener("click", function(){
const options = "width = 400, height = 500, top=50, left=400"
window.open("11-1_pop.html", "popUp", options)
})
// 팝업창 JS
// 1. 부모창을 나타내는 객체: opener
const parentValue = opener.document.getElementById("parentInput")
// 2. 부모로부터 받아온 값 팝업창에 출력
const fromParents = document.getElementById("fromParents")
fromParents.innerHTML = parentValue.value
// 3. 부모창으로 값 전달하고 닫기
const childInput = document.getElementById("childInput")
const btn2 = document.getElementById("btn2")
btn2.addEventListener("click", function(){
const fromChild = opener.document.getElementById("fromChild")
fromChild.value = childInput.value
window.close()
})
'JS > JavaScript' 카테고리의 다른 글
11. DOM (0) | 2023.03.04 |
---|---|
10. JavaScript 객체, JSON (0) | 2023.03.03 |
8. 배열 (0) | 2023.03.01 |
7. 형변환, 비교연산자, 문자열/숫자 내장함수 (0) | 2023.03.01 |
6. 정규표현식 (0) | 2023.02.28 |