Computer Science/웹 프로그래밍

BOM 개념과 활용

mitdog 2024. 7. 10. 12:47

BOM(Browser Object Model)

브라우저 객체 모델. DOM이 Document(웹 페이지 문서)에 관한 객체였다면,
BOM은 Browser에 관한 객체인 것이다.
(이 글을 쓰는 지금도 마침 봄이다ㅋ)

최상위 : window
나머진 그 아래 동등.

Window Methods

window.open() 창 열기
window.close() 창 닫기
window.moveTo() 창 옮기기
window.resizeTo() 창 크기 변경하기
window.onload() 로드가 되었을 때(head, body....)
window.unload() 페이지 벗어날 때

Example) 새로운 윈도우(창) 열기
<form>
    <input type="button" value="구글창 열기" onclick="window.open("http://www.google.com", "_blank", "width=300, height=300", true)">
// 인자: url, 새창에 열지 새탭에 열지(기본값 새창), 창 크기, 상태    
</form>

Screen Object : 모니터 화면

모니터 화면에 대한 정보를 담은 객체.
window.screen 인데 window 생략 가능 ㅇㅇ

screen.availHeight : 화면 높이 반환(원랜 윈도우 테스크바 제외였는데 요즘은 포함임)
screen.availWidth : 너비 버젼 ㅇㅇ
screen.colorDepth : 컬러 팔레트 깊이(?) = 한가지 색 표현하기 위해 쓰인 비트수(24 or 32bit)
screen .height : 화면 전체 높이
screen.pixelDepth : 화면 컬러 해상도(bits per pixel)값 반환
screen.width : 화면 전체 너비

Exmaple) 새로운 창 전체 화면으로 열기
<script>  
function maxopen(url, winattributes) {  
var maxwindow = window.open(url, "", winattributes)  
maxwindow.moveTo(0, 0); // 왼쪽 위 상단으로 옮기기  
maxwindow.resizeTo(screen.availWidth, screen.availHeight) // 모니터 가로길이, 세로길이 = 최대 크기
}  
</script>  
<a href="#" onClick="maxopen('http://www.google.com', 'resize=1, scrollbars=1, status=1'); return false">전체 화면 보기</a>

Location Object: 주소(URL)

페이지의 주소(URL)에 대한 정보를 담은 객체.
새로운 페이지로 이동시키는 메소드도 있음.

속성 여러개 있는데... 몇 개만 적으면
location.href : 전체 URL 반환
location.host : URL 중에서 hostname, port 반환
location.port : URL 중에서 port 반환
protocol : URL 중에서 protocol 부분(http, https) 반환

  • 페이지 옮기는 메소드(like a tag)
    location.assign() : history 유지 = 뒤로가기로 이전 페이지 돌아갈 수 있음
    location.replace() : history 유지X = 뒤로가기로 이전 페이지 못돌아감

Navigator Objcet: 브라우저 정보

크롬, 엣지, 파폭... 등의 브라우저에 관한 정보를 담고있는 객체.

Exmaple) 브라우저 모든 정보 보기(feat. key값)
<html>  
    <body>  
        <script>  
            for (var key in navigator) {  
                value = navigator[key];  
                document.write(key + ": " + value + "<br>");  
            }  
        </script>  
    </body>  
</html>