새소식

인기 검색어

개인공부/JavaScript

BOM - 브라우저 객체 모델 정리

  • -

window 객체

Window 객체는 자바스크립트의 최상위객체이자 전역객체이면서 모든 객체가 소속된 객체이다.

 

아래의 사진을 보면 DOM, BOM, JavaScript가 최상위 객체인 Window 객체 밑에 소속이 되어있다.

이 객체들은 서로 계층적인 관계로 구조화 되어있다.

 

 

JSC (Javascript core)

자바스크립트 언어의 자체에 정의되어 있는 객체들. Object, Array, function 등..

 

 

DOM(Document Object Model) : 문서 객체 모델

텍스트 파일로 만들어져 있는 웹 문서를 브라우저에 렌더링하려면,

웹 문서를 브라우저가 이해할 수 있는 구조로 메모리에 올려야 한다.

 

여기서 브라우저가 웹 문서를 이해할 수 있도록 문서를 객체로 구성되게 한 것을 DOM이라고 한다.

 

 

BOM(Browser Object Model) : 브라우저 객체

BOM은 자바스크립트가 브라우저와 소통하기 위해서 만들어진 모델이다.

공식 표준은 아니지만 브라우저 대부분이 자바스크립트와의 상호작용에 있어서 비슷한 메소드와 속성으로 동작하기에 이와 같은 메소드들을 통칭하여 BOM이라고 한다.

window 객체를 통해 접근이 가능하다.

  • Window : 브라우저 창이 열릴 때마다 하나씩 만들어지는 객체.
    브라우저 창 안에 존재하는 모든 요소의 최상위 객체
  • Document : 웹 문서에서 <body> 태그를 만나면 만들어지는 객체
    HTML 문서 정보를 가지고 있다.
  • History : 현재 창에서 사용자 방문 기록을 저장하고 있는 객체
  • Location : 현재 페이지에 대한 URL 정보를 가지고 있는 객체
  • Navigator : 현재 사용 중인 웹 브라우저 정보를 가지고 있는 객체
  • Screen : 현재 사용 중인 화면 정보를 다루는 객체

Window 객체의 속성

속 성 설 명
document 브라우저 창에 표시된 웹 문서에 접근할 수 있다.
frameElement 현재 창이 다른 요소안에 포함되어 있으면 그 요소를 반환
포함되어 있지 않으면 null 을 반환
innerHeight (웹 사이트)내용 영역의 높이
innerWidth (웹 사이트)내용 영역의 너비
localStorage 웹 브라우저에서 데이터를 저장하는 로컬 스토리지를 반환
location Window 객체의 위치/현재 URL을 나타냄
name 브라우저 창의 이름을 가져오거나 수정
outerHeight 브라우저 창의 바깥 높이(웹 브라우저의 메뉴나 도구 모음 등까지 포함된 너비와 높이)
outerWidth 브라우저 창의 바깥 너비(웹 브라우저의 메뉴나 도구 모음 등까지 포함된 너비와 높이)
pageXOffset 스크롤했을 때 화면이 수평으로 이동하는 픽셀 수. scrollX 와 같다.
pageYOffset 스크롤했을 때 화면이 수직으로 이동하는 픽셀 수. scrollY 와 같다.
parent 현재 창이나 서브 프레임의 부모 프레임
screenX 브라우저 창의 왼쪽 테두리가 모니터 왼쪽 테두리에서부터 떨어져 있는 거리를 나타냄
screenY 브라우저 창의 위쪽 테두리가 모니터 위쪽 테두리에서부터 떨어져 있는 거리를 나타냄
scrollX 스크롤했을 때 수평으로 이동하는 픽셀 수
scrollY 스크롤했을 때 수직으로 이동하는 픽셀 수
sessionStorage 웹 브라우저에서 데이터를 저장하는 세션 스토리지를 반환

 

 

Window 객체의 함수

Window 객체에서 사용할 수 있는 함수는 웹 브라우저 창 자체와 관련된 것이 대부분이다.

Window 객체는 기본 객체이기 때문에 window를 생략하고 함수 이름만 입력해서 사용할 수 있다.

함 수 설 명 사용예시
alert( ) 알림 창(Alert Dialog)을 표시 window.alert("알릴내용")
blur( ) 창에서 포커스 제거  
close( ) 현재 열려있는 창을 닫음 var newWin = window.open(Visit Website"", "", "width=300, height=300")
newWin.close( )
confirm( ) 확인 , 취소 가 있는 확인 창을표시 var result = window.confirm("보여줄 메시지") // result에 선택한 값이 저장됨(확인은 true)
focus( ) 현재 창에 포커스를 부여  
moveBy( ) 현재 창을 지정한 크기만큼 이동시킴
(현재 위치를 기준으로 가로로 x픽셀, 세로로 y픽셀 만큼 이동)
var newWin = window.open(Visit Website"", "", "width=300, height=300")
newWin.moveBy(500,500)
moveTo( ) 현재 창을 지정한 좌표로 이동시킴
(화면의 왼쪽 위 모서리를 기준으로 가로로 x픽셀, 세로로 y픽셀만큼 이동)
var newWin = window.open(Visit Website"", "", "width=300, height=300")
newWin.moveTo(0,0) //창을 화면 왼쪽 위로 옮김
open( ) 새로운 창(새 탭)을 연다.

매개변수 (전부 선택, 필수 X)
1번째 매개변수 : 문서나 사이트 주소(생략하면 빈문서)
2번째 매개변수 : 새 창의 Target이나 윈도우 이름
3번째 매개변수 : 알림창으로 표시할 때의 너비나 높이, 위치(px값, 높이나 너비의 최소값은 100 , left 는 화면의 왼쪽 가장자리 기준, top 은 위쪽 가장자리 기준)
window.open("https://www.daum.netVisit Website")
window.open() //빈 문서
window.open("https://www.daum.net", "_self") // 현재 창에 새창 표시
window.open("https://www.daum.netVisit Website", "", "left=0, top=0, width=300, height=300")
postMessage( ) 다른 창으로 메시지 전달  
print( ) 현재 문서를 인쇄 window.print( )
prompt( ) 프롬프트 창에 입력한 텍스트를 반환

1번째 매개변수(선택) : 화면에 표시할 메시지
2번째 매개변수 : 텍스트 입력필드에 기본으로 전달할 문자열
window.prompt("표시할 메시지", "default 문자열")
resizeBy( ) 지정한 크기만큼 현재 창 크기를 조절
(현재 브라우저 창의 크기를 기준으로 너비와 높이에 값을 더해줌)
var newWin = window.open(Visit Website"", "", "width=300, height=300")
newWin.resizeBy(100,100) //가로 세로 길이 100픽셀씩 늘림
newWin.resizeBy(-100,-100) //가로 세로 길이 100픽셀씩 줄임
resizeTo( ) 동적으로 브라우저 창의 크기 조절(최종 크기를 지정)
resizeBy( ) 함수에서는 음수 값을 사용할 수 있지만 resizeTo( ) 함수 에서는 음수 값을 지정할 수 X
var newWin = window.open(Visit Website"", "", "width=300, height=300")
newWin.resizeTo(200,200) // 창의 (최종) 크기를 가로, 세로 200px로 지정
scroll( ) 문서에서 특정 위치로 스크롤  
scrollBy( ) 지정한 크기만큼씩 스크롤  
scrollTo( ) 지정한 위치까지 스크롤  
setCursor( ) 현재 창의 커서를 변경  
showModalDialog( ) 모달 창(Modal Window)을 표시

모달 창 : 이벤트 정보나 공지 내용 등을 표시하기 위해 현재 브라우저 창 위에 띄우는 새로운 창.
일반적인 알림 창이 웹 브라우저 창을 새로 여는 것이라면 모달 창은 문서 소스 안에 <div> 태그를 사용해 삽입하고 레이어로 표시한 창이다. 알림창을 차단하더라도 모달 창은 화면에 표시 가능
 
sizeToContent( ) 내용에 맞게 창 크기를 맞춤  
stop( ) 로딩중지 window.stop( )



Navigator 객체에는 웹 브라우저와 관련된 정보가 담겨있다.(브라우저 버전이나 플랫폼(OS) 버전 등)

주로 호환성 문제등을 위해서 사용 된다.

속 성 설 명
appCodeName 브라우저 이름(코드 이름)을 문자열로 반환
appName 브라우저 공식 이름을 문자열로 반환
appVersion 브라우저 버전을 문자열로 반환
battery 배터리 충전 상태를 알려주는 정보가 담긴 객체를 반환
connection 브라우저 장치의 네트워크 정보가 담긴 객체를 반환
cookieEnabled 쿠키 정보를 무시한다면 false, 그렇지 않으면 true를 반환
geolocation 모바일 기기를 사용한 위치 정보가 담긴 객체를 반환
language 브라우저의 기본 언어 설정 반환
maxTouchPoints 장치에서 동시에 터치 가능한 포인트가 몇 개인지 반환
platform 브라우저 플랫폼(운영체제) 정보를 가지고 있는 문자열을 반환
userAgent 현재 브라우저 정보가 있는 사용자 에이전트(User Agent) 문자열을 반환
사용자의 웹 브라우저 버전, 자바스크립트 엔진 종류 등의 정보 확인가능
 
document.write("<tr><td class='title'>브라우저 코드명</td><td> " + navigator.appCodeName + "</td></tr>");
 
document.write("<tr><td class='title'>브라우저 종류</td><td>" + navigator.appName + "</td></tr>")
 
document.write("<tr><td class='title'>브라우저 버전</td><td>" + navigator.appVersion + "</td></tr>")
 
document.write("<tr><td class='title'>브라우저 플랫폼</td><td>" + navigator.platform + "</td></tr>")
 
document.write("<tr><td class='title'>브라우저 에이전트</td><td>" + navigator.userAgent + "</td></tr>");


사용자 에이전트(User Agent) 문자열

사용자 에이전트 문자열은 클라이언트에서 서버로 정보를 보낼 때 클라이언트에서 함께 보내는 정보로, 서버에서는 이 정보를 보고 브라우저 종류를 확인한 후 그 브라우저에 맞게 웹 페이지를 표시한다.

이 정보는 navigator.useragent 에 포함되어 있다.

Tip

ex) 익스플로러 11 사용자가 엡 사이트에 접속했을 때 사용자에게 크롬 브라우저로 접속하라고 사이트에서 알려 줘야 한다면, 인터넷 익스플로러 11의 사용자 에이전트 문자열이 어떤 것인지 알고 있어야 한다.

 

[참고] 사용자 에이전트 문자열의 의미

Mozilla/x.x 모질라 버전
Windows NT x.x 브라우저를 실행하는 컴퓨터 운영체제
Win64: x64 컴퓨터 운영체제가 윈도우 64bit 시스템
WOW64 Windows 32-bit on Windows 64-bit의 줄임말
64bit 시스템에서 32bit 응용 프로그램을 실행할 수 있는 환경을 의미
Trident/x.x Trident 엔진 버전
rv: x.x 브라우저 버전
AppleWebKit/ x.x 웹킷 엔진의 빌드 번호
KHTML HTML 레이아웃 엔진. 오픈소스 렌더링 엔진이다.
like Gecko 게코 기반의 다른 브라우저와 호환된다는 의미
Firefox/ x.x 파이어폭스 브라우저 버전
Chrome/ x.x 크롬 버전
Safari/ x.x 사파리 브라우저 빌드 번호

 

 

💬 인터넷 익스플로러

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; MARKANYWEBDRM#25146; rv:11.0) like Gecko

 

💬 엣지

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246

사용자 에이전트 문자열에 Chrome 과 Safari , Edge 가 모두 있기 때문에 크롬이나 사파리보다 먼저 엣지인지 체크해야 한다.

사용자 에이전트 문자열에 Edge 가 있는지 확인하면 된다.

 

💬 크롬

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36

에이전트 문자열에 Safari 도 있기 때문에 사파리보다 크롬을 먼저 체크해야 한다.

사용자 에이전트 문자열에 Chrome 문자열이 있는지 확인하면 된다.

 

 

💬 사파리, 오페라

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7


기타

 www.useragentstring.com
UserAgentString.com - List of User Agent Strings

 

 

- 웹 브라우저 확인 코드 -

 
var agent = navigator.userAgent.toLowerCase(); // userAgent 문자열을 소문자로 변환
 
var name = navigator.appName;
 
 
 
if(name == "Internet Explorer" || agent.indexOf("triden") > -1 || agent.indexOf("edge/") > -1) { // ie 이거나 엣지
 
if(name == "Internet Explorer") document.write("IE 10 이하 버전입니다.");
 
else {
 
if (agent.indexOf("trident") > -1) document.write("IE 11 브라우저입니다.");
 
else if (agent.indexOf("edge/") > -1) document.write("MS Edge 브라우저입니다.");
 
}
 
}
 
else if (agent.indexOf("safari") > -1) { // 크롬이거나 사파리
 
if(agent.indexOf("chrome") > -1) document.write("Chrome 브라우저입니다.");
 
else if(agent.indexOf("safari") > -1) document.write("Safari 브라우저입니다.");
 
}
 
else if (angent.indexOf("firefox") > -1) document.write("Firefox 브라우저입니다.");
 
else if (agent.indexOf("opera") > -1) document.write("Opera 브라우저입니다.");

사용자 에이전트 문자열을 사용해 웹 브라우저의 종류를 확인하는 예시이다.

toLowerCase( ) 함수를 사용해서 모두 소문자로 바꾼 뒤 indexOf( ) 함수를 사용해서 브라우저의 사용자 에이전트 문자열을 확인한다.

indexOf( ) 는 문자열에 지정한 문자열이 있다면 그 내용의 인덱스 값을 반환하고 없으면 -1 을 반환하기 때문에 반환되는 값이 -1 보다 큰지 알아보면 된다.


History 객체

History 객체에는 브라우저에서 '뒤로', '앞으로' 또는 주소 표시줄에 입력해서 돌아다녔던 사이트 주소가 저장되어 있다.

보안 문제 때문에 브라우저에 있는 브라우저 히스토리는 읽기 전용이다.

 

History 객체의 속성

속 성 설 명
length 현재 브라우저 창의 History목록에 있는 항목의 개수(방문한 사이트 개수)를 반환

 

History 객체의 함수

이 객체에서 사용할 수 있는 함수는 방문하면서 History 객체에 저장된 URL을 앞뒤로 이동하는 것이다.

함 수 설 명
back( ) History 목록에서 이전 페이지를 현재 화면에 불러옴
forward( ) History 목록에서 다음 페이지를 현재 화면에 불러옴
go( ) HIstory 목록에서 현재 페이지를 기준으로 상대 위치에 있는 페이지를 현재 화면에 불러옴

ex) history.go(1) 은 다음페이지를 가져오고, history.go(-1) 은 이전페이지를 불러옴

Location 객체

브라우저의 주소 표시줄과 관련된 객체이다.

현재 문서의 URL 주소 정보를 가지고 있는데, 이 정보를 편집하면 현재 브라우저 창에 열릴 사이트나 문서를 지정할 수 있다.

 

Location 객체의 속성

속 성 설 명
hash URL 중 # 으로 시작하는 해시 부분을 나타냄
host URL의 호스트 이름과 포트 번호를 나타냄
hostname URL의 호스트 이름을 나타냄
href 전체 URL이다. 이 값을 변경하면 해당 주소로 이동할 수 있다.
pathname URL 경로를 나타냄
port URL의 포트 번호를 나타냄
protocol http:// 나 ftp:// 같은 URL의 프로토콜을 나타냄
password 도메인 이름 앞에 username 과 password 를 함께 입력해서 접속하는 URL일 경우 password 정보를 저장
search URL 중 ? 으로 시작하는 검색 내용 부분을 나타냄
username 도메인 이름 앞에 username 을 함께 입력해서 접속하는 사이트 URL일 경우 username 정보를 저장

 

Location 객체의 함수

함 수 설 명
assign( ) 현재 문서에 새 문서 주소를 할당해 새 문서를 가져옴
reload( ) 현재 문서를 다시 불러옴. 브라우저의 새로고침과 같은 역할
replace( ) 현재 문서의 URL을 지우고 다른 URL의 문서로 교체
replace( ) 를 사용하면 이전버튼을 눌러도 이전 문서로 이동할 수 X
toString( ) 현재 문서의 URL을 문자열로 반환

- location 객체의 assign() 메소드는 브라우저 창에 지정된 URL 주소에 존재하는 문서를 불러 온다.

- replace() 메소드는 새 문서를 불러오기 전에, 현재 문서를 브라우저의 히스토리에서 제거한다는 점이 assign() 메소드와 다르다.


Screen 객체

주로 화면(PC 모니터나 모바일 기기의 화면 자체) 정보를 알아낼 때 많이 사용하는 객체이다.

 

Screen 객체의 속성

속 성 설 명
availHeight 화면에서 윈도우의 작업 표시줄이나 맥의 메뉴/독 같은 UI 영역을 제외한 부분의 높이
availWidth UI 영역을 제외한 부분의 너비
colorDepth 화면상에서 픽셀을 렌더링할 때 사용하는 색상 수
height UI 영역을 포함한 높이
orientation 화면의 현재 방향(기본값은 가로방향)
pixelDepth 화면상에서 픽셀을 렌더링할 때 사용하는 비트 수
대부분의 컴퓨터에서 colorDepth와 pixelDepth는 같은 값을 가집니다.
width UI 영역을 포함한 화면의 너비

Tip

※ screen.width와 screen.heigth는 현재 사용자의 모니터 화면 크기를 반환
※ window.outerWidth와 window.outerHeigth는 현재 브라우저 창의 크기를 반환

 

Screen 객체의 함수

함 수 설 명
lockOrientation( ) 화면 방향을 잠금
unlockOrientation( ) 화면 방향 잠금 해제

 

 

[JS] 📚 BOM - 브라우저 객체 모델 정리

window 객체 Window 객체는 자바스크립트의 최상위객체이자 전역객체이면서 모든 객체가 소속된 객체이다. 아래의 사진을 보면 DOM, BOM, JavaScript가 최상위 객체인 Window 객체 밑에 소속이 되어있다

inpa.tistory.com

 

'개인공부 > JavaScript' 카테고리의 다른 글

자바스크립트 DOM 문법  (0) 2022.09.15
JS 이벤트 총 정리  (0) 2022.09.15
자바스크립트 이벤트 종류  (0) 2022.09.15
HTML 로그인 FORM  (2) 2022.09.14
자바스크립트 유효성 검사 정규식 활용  (0) 2022.09.13
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.