Front-End/JavaScript

[자바스크립트] BOM(브라우저 객체 모델), window 객체 특징과 함수 알아보기

챌링킴 2021. 6. 20. 17:04
반응형

1) 브라우저 객체 모델(BOM)란?

- 자바스크립트를 이용하면 브라우저의 정보에 접근하거나 브라우저의 여러 기능들을 제어할 수 있다.

- 이 때 사용할 수 있는 객체 모델을 브라우저 객체 모델(Browser Object Model)이라고 한다.

- 자바스크립트가 브라우저의 기능적인 요소들을 직접 제어하고 관리할 방법을 제공해준다.

 

2) window 객체 설명

- 현재 웹브라우저의 창이나 탭을 표현하기 위한 객체

- 비표준 객체

- window객체는 제일 먼저 저장된다.

- 함수 사용 시 window. 생략 가능하다.

 

3) window 객체의 프로퍼티 출력해보기

    <script>
        'use strict';
        for(let win in window){
            console.log(`${win} : ${window[win]}`);
        }
    </script>

▼실행결과▼

...etc

 

4) window 객체 내 자주 쓰이는 함수 알아보기

 

1. setTimeout( )

일정 시간이 지난 후, 매개변수로 제공된 함수를 실행한다.

 

function 함수명( ){

   ...

}

 

const 상수명 = setTimeout(함수명, 시간);

//시간이 지난 다음에 함수가 실행된다.

//함수 뒤에 소괄호 없이 쓰면 함수를 변수로 보낸 것이다. 이것을 콜백함수(Callback Function)라고 한다.

 

2. clearTimeout( )

setTimeout( )에서 실행된 함수를 취소해준다.

 

clearTimeout(setTimeout의 이름 or 변수명);

 

    <script>
        'use strict';
        function hi(){
            alert('안녕!');
        }

        const st = window.setTimeout(hi,2000); //2초가 지난 후 hi함수 실행

        clearTimeout(st); //setTimeout()을 취소해줌
    </script>

 

3. setInterval( )

일정 시간마다 매개변수로 제공된 함수를 실행한다.

 

function 함수명( ){

   ...

}

 

const 상수명 = setInterval(함수명, 시간);

 

4. clearInterval( )

setInterval( )에서 실행된 함수를 취소해준다.

 

clearInterval(setInterval의 이름 or 변수명);

 

<body>
    <script>
        'use strict';
        function hi(){
            console.log('안녕!');
        }

        function stopHi(){
            console.log(`hi() 중지`);
            clearInterval(si);
        }

        const si = setInterval(hi, 2000); //2초마다 hi함수 실행
    </script>
    <button onclick="stopHi()">중지</button>
</body>

 

5. window.onload( )

- 스크립트 언어는 위에서 아래로 해석되기 때문에 DOM에서 HTML 요소를 추출할 때 body보다 위에 있으면 해석 순서에 오류가 생길 수 있다.

- 이 경우 자바스크립트 내용들을 밑으로 옮겨야 하는데 html문서가 길어지면 가독성도 좋지않고 불편할 수 있다.

- 따라서 문서가 준비된 상황 이후에 발동하게끔 해주는 역할을 한다.

 

window.onload = function( ){
   수행할 문장
}

 

6. window.open( )

- 새로운 브라우저 창을 열 수 있으며, 새로운 브라우저 창의 세부적인 옵션들도 하나하나 설정해줄 수 있다.

 

let 객체명 = window.open(url,name,specs,replace);

 

객체명 : 새로 만들어진 창 객체가 담길 공간
url : 주소
name : _blank 새창 / _child 자식프레임 / _parent 부모프레임 / _self 현재 페이지
spec : 선택적인 값(생략가능하단 뜻)으로 창의 크기, 스크롤 여부, 리사이즈 가능 등의 속성을 지정한다.
replace : 히스토리 목록에 새 항목을 만들지, 현재 항목을 대체할지 지정한다. - true : 현재 히스토리 대체 / false : 새 항목

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<button onclick="doing()">창닫기</button>
</body>
<script>
	let window1 = window.open("https://www.naver.com","w1");
	window.open("https://www.google.com","w1"); //동일한 name으로 open사용시 기존에 열렸던 창 내용이 바뀜
	
	function doing(){
		window1.close();
	}
</script>
</html>

 

5) window 객체 예제 - 시계 프로그램 작성해보기

 

<body>
    <h2>시계 만들기</h2>
    <div id="result"></div>

    <p>
        <input type="button" value="시작" onclick="startTime()">
        <input type="button" value="중지" onclick="stopTime()">
    </p>

    <script>
        'use strict';

        let timeId = null;

        function startTime(){
            timeId = setInterval(time,1000); //time 함수를 1초마다 실행
        }
        function time(){
            const date = new Date;
            const hour = date.getHours();
            const minutes = date.getMinutes();
            const sec = date.getSeconds();
            console.log(`현재 시간 : ${hour}:${minutes}:${sec}`);
            document.getElementById('result').innerHTML = hour + ":" + minutes + ":" + sec;
            //문서 내에 result라는 id를 가진 요소를 찾아서 그 안의 내용 = ~~~;
        }

        function stopTime(){
            console.log(`time() 중지`);
            clearInterval(timeId);
        }
    </script>
</body>

▼실행결과▼

반응형