[JavaScript] Browser Object Model(BOM)
목차
Browser Object Model(BOM)이란?
웹 개발에서 BOM이란, 웹 브라우저가 제공하는 객체들의 집합으로, 웹 페이지와 브라우저 환경 간의 상호작용을 가능하게 한다. BOM은 표준화되어 있지 않아 브라우저마다 세부적인 구현 방식이 다를 수 있지만, 대부분의 브라우저는 BOM의 주요 기능을 비슷하게 지원한다. 개발자는 BOM을 사용함으로써 웹페이지의 콘텐츠 바깥에 있는 브라우저 관련 요소(browser-specific element)들에 접근 및 제어할 수 있다(이는 웹 문서의 콘텐츠에 집중하는 Document Object Model(DOM)과는 다른 점이다).
BOM의 특징
- HTML 및 DOM과의 차이
- BOM은 브라우저 창(window)과 관련된 기능을 제공하며, HTML 구조 및 내용에 직접적으로 영향을 미치는 DOM(Document Object Model)과는 다르다.
- 표준화 부족
- DOM과 달리 BOM은 명확한 표준이 없어 브라우저마다 구현 방식이 조금씩 다를 수 있다.
- 확장성
- BOM은 브라우저의 확장 기능(API)과 연결되어 다양한 작업(ex: 네트워크 상태 확인, 브라우저 저장소 관리 등)을 지원한다.
주요 구성 요소
BOM은 주로 브라우저 창(window)과 관련된 객체들로 구성되며, 아래와 같은 주요 객체와 기능을 포함한다:
1. window 객체
- 브라우저 창(또는 탭)을 대표하는 최상위 객체.
- BOM의 핵심으로, 다른 모든 객체는 window 객체의 하위 속성으로 접근 가능하다.
- 주요 메서드 및 속성:
- 창 관리: window.open(), window.close()
- 알림: window.alert(), window.confirm(), window.prompt()
- 타이머: setTimeout(), setInterval(), clearTimeout(), clearInterval()
- 위치 정보: window.location
- 문서 링크: https://developer.mozilla.org/ko/docs/Web/API/Window
Window - Web API | MDN
Window 인터페이스는 DOM 문서를 담은 창을 나타냅니다. document 속성이 창에 불러온 DOM 문서를 가리킵니다.
developer.mozilla.org
2. location 객체
- 현재 문서의 URL 정보를 제공하고, URL을 변경하거나 새 페이지로 이동하는 데 사용된다.
- 주요 속성:
- location.href: 현재 URL
- location.hostname: 호스트 이름
- location.pathname: 경로 이름
- location.search: 쿼리 문자열
- 문서 링크: https://developer.mozilla.org/ko/docs/Web/API/Location
Location - Web API | MDN
Location 인터페이스는 객체가 연결된 장소(URL)를 표현합니다. Location 인터페이스에 변경을 가하면 연결된 객체에도 반영되는데, Document와 Window 인터페이스가 이런 Location을 가지고 있습니다. 각각
developer.mozilla.org
3. navigator 객체
- 브라우저 및 사용자 환경에 대한 정보를 제공한다.
- 주요 속성:
- navigator.userAgent: 브라우저의 User-Agent 문자열
- navigator.language: 사용자 언어
- navigator.geolocation: 위치 정보 접근
- navigator.onLine: 온라인 상태 확인
- 문서 링크: https://developer.mozilla.org/ko/docs/Web/API/Navigator
Navigator - Web API | MDN
Navigator 인터페이스는 사용자 에이전트의 상태와 신원 정보를 나타내며, 스크립트로 해당 정보를 질의할 때와 애플리케이션을 특정 활동에 등록할 때 사용합니다.
developer.mozilla.org
4. history 객체
- 브라우저의 세션 기록을 관리한다.
- 주요 메서드:
- history.back(): 이전 페이지로 이동
- history.forward(): 다음 페이지로 이동
- history.go(n): 특정 위치의 기록으로 이동
- 문서 링크: https://developer.mozilla.org/ko/docs/Web/API/History_API
History API - Web API | MDN
History API는 history 전역 객체를 통해 브라우저 세션 히스토리(웹 익스텐션 히스토리와 혼동해서는 안 됩니다.)에 대한 접근을 제공합니다. 사용자의 방문 기록을 앞뒤로 탐색하고, 방문 기록 스택
developer.mozilla.org
5. screen 객체
- 사용자의 디스플레이와 관련된 정보를 제공한다.
- 주요 속성:
- screen.width: 화면 너비
- screen.height: 화면 높이
- screen.availWidth: 사용 가능한 화면 너비
- screen.availHeight: 사용 가능한 화면 높이
- 문서 링크: https://developer.mozilla.org/en-US/docs/Web/API/Window/screen
Window: screen property - Web APIs | MDN
The Window property screen returns a reference to the screen object associated with the window. The screen object, implementing the Screen interface, is a special object for inspecting properties of the screen on which the current window is being rendered.
developer.mozilla.org
예제
// 현재 페이지 URL 확인
console.log(window.location.href);
// 새 창 열기
let newWindow = window.open("https://www.example.com", "_blank");
// 페이지 새로고침
window.location.reload();
// 사용자 브라우저 정보 출력
console.log(navigator.userAgent);