오봉이와 함께하는 개발 블로그

JavaScript - 브라우저 객체 모델 window객체 본문

FE/JavaScript

JavaScript - 브라우저 객체 모델 window객체

오봉봉이 2021. 12. 10. 13:51
728x90

자바스크립트 객체

  • 내장객체
  • 브라우저 객체
  • 문서 객체(DOM)
  • 사용자 정의 객체

브라우저 객체 모델

  • 자바스크립트에서는 웹 페이지를 구성하는 HTML 태그의 모든 요소와 웹 브라우저를 구성하는 요소들을 객체로 정의하여 제공
  • 객체들을 계층 구조로 분류
  • 브라우저 객체
    • 웹 브라우저를 대상으로 이루어진 객체
    • window 객체 : 창
    • document 객체 : 문서
    • history 객체 : 웹 브라우저 기록 정보
    • location 객체 : 주소 정보
    • navigator 객체 : 웹 브라우저 정보(종류 판별 등)

window 객체

  • 창에 대한 전반적인 상황을 제어하는 최상위 객체
  • 자바스크립트에서 사용되는 모든 객체는 window 객체 하위에 존재
  • navigator 객체만 제외하고 모든 객체는 window 객체를 통해 접근하여 사용
  • window 객체는 생략 가능
    • window.document.pic.src = "image.jpg";
    • 문서 내에서 name 속성이 "pic"인 객체의 src 속성 변경
    • <img name=”pic” src=’a.jpg’>
  • window 객체의 주요 속성
    • toolbar : 속성 측정 방법 yes/no, 도구 모음 표시 여부 설정
    • location : 속성 측정 방법 yes/no, URL 주소 표시줄 표시여부 설정
    • status : 속성 측정 방법 yes/no, 상태 바 표시 여부 설정
    • menubar : 속성 측정 방법 yes/no, 메뉴 표시줄 표시 여부 설정
    • scrollbars : 속성 측정 방법 yes/no, 스크롤 바 표시 여부 설정
    • directories : 속성 측정 방법 yes/no, 디렉토리 바 표시 설정
    • resizable : 속성 측정 방법 yes/no, 창의 크기 조정 가능 여부 설정
    • height : 픽셀 수, 창의 세로 길이를 픽셀 단위로 설정
    • width : 픽셀 수, 창의 가로 길이를 픽셀 단위로 설정
  • window 객체의 주요 메소드
    • open() : 새로운 창을 만들어 화면에 출력하는 기능
    • close() : 열린 창을 닫는 기능
    • setTimeout('호출할 함수', 지연시간) : 일정 시간이 지난 후에 함수 한 번 호출 기능
      • 타이머ID = setTimeout('winclose()', 1000);
    • clearTimeout(타이머ID) : setTimeout() 메소드가 반환하는 타이머ID로 설정된 내용 정지 기능
      • clearTimeout(타이머ID);
    • setInterval() : 일정 시간 간격 후 명령 수행 기능(함수 여러 번 호출 가능 - 애니메이션 효과에 사용)
    • clearInterval() : setInterval()로 설정된 내용 정지 기능
  • window 객체의 open() 메소드
    • window.open(“URL”, “창이름”, “창 속성”);
    • URL : 웹페이지 주소나 HTML 파일명. 빈 값이면 새로운 창을 만들어서 오픈
    • 창 이름 : 새로 만들어지는 창 이름 (임의로 작성)
    • 창 속성 : 창의 모양이나 특징
    • window.open(“test.html”, “test”, “width=200, height=200, status=yes, scrollbars=yes, resizable=yes”); // 기존의 test.html 문서 열기
    • window.open(“”, “newWin”, “width=400, height=150”); // 새로운 창을 만들어서 열기
window 객체의 open() 메소드 예제 기존 문서 열기 bigimage.html, windowOpen.html
  • bigImage.html
<body>
    <center>
        <img src="image/고흐.jpg">
        <br>
        <button onclick="window.close()">닫기</button>
    </center>
</body>
  • windowOpen.html
        <script type="text/javascript">
            function showBigImage() {
                window.open("bigImage.html", "bigWin", "width=600, height=800 top=50");
            }
        </script>
</head>
<body>
    <center>
        그림에 마우스를 올리면<br>
        그림을 크게 볼 수 있습니다<br>
        <img src="image/고흐.jpg" width="118" height="146" onmouseover="showBigImage()">
    </center>
</body>
window 객체의 open() 메소드 예제 새로운 문서 만들어서 열기 windowOpen2.html
        <script type="text/javascript">
            // 새로운 창을 만들어서 열기
            // 새로운 창에 문자열과 버튼 출력 / 버튼 클릭시 창 닫음
            function openNewWindow() {
                var createWin = window.open("", "newWind", "width=400, height=150")
                createWin.document.write("새로 만든 윈도우.<br>");
                createWin.document.write("<button onclick=\"window.close()\">닫기</button>");
            }
            function openWindow() {
                window.open("windowOpen.html", "bigWin", "width=200, height=400, top=50, left=400, scrollbars=yes, status=yes, resizable=yes");
            }
        </script>
</head>
<body>
    <button onclick="openNewWindow()">새 창 열기</button>
    <button onclick="openWindow()">Big Image 열기</button>
</body>
window 객체의 타이머 관련 메소드(setTimeout()/clearTimeout(), setInterval()/clearInterval()) 예제
  • setTimeout() 에제 - setTimeout.html
<script type="text/javascript">
            function openInfo() {
                window.open("msgWindow.html", "setTimeout", "width=300, height=200");
            }
            function showMsg() {
                document.write("로드하자마자 열린 공지 창이<br>3초 후에 자동으로 닫혔습니다.")
            }
        </script>
</head>
<body onload="openInfo()", onfocus="showMsg()">
    <h1>Opener</h1>
</body>
  • setTimeout() 에제 - msgWindow.html
        <script type="text/javascript">
            function winClose() {
                window.close();
                opener.focus(); // 현재 창을 연 부모창에 focus
            }
        </script>
</head>
<body onload="setTimeout('winClose()', 3000)">
    <h1>공지사항</h1>
    <p>이 창은 3초 후에 자동으로 닫힙니다.</p>
</body>
  • setInterval(), clearInterval() 예제 - setInterval.html
        <script type="text/javascript">
            function showTime() {
                var today = new Date();
                var hour = today.getHours();
                var minute = today.getMinutes();
                var second = today.getSeconds();
                var ampm;

                if(hour >= 12) {
                    if(hour == 12) { 
                        ampm = "오후 ";
                    }
                    else if (hour == 24) { 
                        ampm = "오전 ";
                        hour -= 24;
                    }
                    else { 
                        ampm = "오후 ";
                        hour -= 12;
                    }
                }
                else { 
                    ampm = "오전 "
                }

                var time = ampm + hour + "시 " + minute + "분 " + second + "초";
                timeShow.innerHTML = time;
            }
        </script>
</head>
<body>
    <button onclick="timerId = setInterval('showTime()', 1000)">시간 출력</button>
    <button onclick="clearInterval(timerId)">시간 정지</button>
    <h2 id="timeShow"></h2>
</body>
  • setInterval(), clearInterval() 예제 - setInterval2.html
        <script type="text/javascript">
            var count = 0;
            function start() {
                alert("이미지 10개 출력");
                timerImg = setInterval('showImage()', 1000)
            }
            function showImage() {
                count++;
                if(count % 2 == 0) {
                    document.body.innerHTML += "<img src=\"image/bomb.png\">";
                }
                else {
                    document.body.innerHTML += "<img src=\"image/apple.png\">";
                }

                if(count == 10) {
                    clearInterval(timerImg);
                    alert("이미지 출력 완료")
                }
            }

        </script>
</head>
<body onload="start()">

</body>
  • setInterval(), clearInterval() 예제 - setInterval3.html
 <style>
        div {margin:0 auto; width:100%; text-align:center;}
    </style>
    <script type="text/javascript">
        var imgCount = 1;    
        var countNum = 10;

        function startCount() {
            timerID = setInterval('showImg()', 500);
        }

        function showImg() {
            countH1.innerHTML = countNum;
            bombImg.src = `image/bomb${imgCount}.jpg`;

            imgCount++;
            countNum--;                

            if(imgCount == 12) {
                clearInterval(timerID);
                imgCount = 1;
                countNum = 10;
            }
        }
    </script>
</head>
<body>
<div>
    <h1 id="countH1">10</h1>
    <img id="bombImg" src="image/bomb1.jpg" ><br><br>    
    <button id="btn" onClick="startCount()">카운트다운 시작</button>
</div>

</body>
</html>
728x90
Comments