브라우저 객체 모델
Browser Object Model
웹 브라우저 창에 문서가 표시되는 순간 브라우저는 html 소스를 읽으며 화면에 내용을 표시하고 객체를 만들어낸다.
웹 브라우저가 열리면 가장 먼저 window라는 객체가 만들어지고 밑으로 하위 요소에 해당하는 객체들이 생성된다.
하위객체는 웹 문서와 주소 표시줄같이 브라우저의 내용에 해당하는 요소를 가리킨다.
이러한 객체 모델을 브라우저객체모델(BOM, Browser Object Model)이라고 한다.
자바스크립트로 객체 모델을 이용하면 브라우저의 정보에 접근하거나 브라우저의 여러 기능들을 제어할 수 있게 된다.
브라우저 객체 모델 종류 | |
window | 브라우저 창이 열릴때마다 하나씩 만들어진다. 브라우저 창 안의 요소 중 최상위(부모)객체이다. |
document | 웹 문서마다 하나씩 있고, <body> 태그를 만나면 만들어진다. html 문서의 정보가 담겨있다. |
navigator | 현재 사용하는 브라우저의 정보가 들어있다. |
history | 현재 창에서 사용자의 방문 기록을 저장한다. |
location | 현재 페이지의 url 정보가 담겨있다. |
screen | 현재 사용하는 화면의 정보가 담겨있다. |
1. window
window 객체는 웹 브라우저의 창을 나타내는 객체를 말한다.
브라우저 창 안의 최상위객체로 브라우저 객체 모델(BOM) 뿐 아니라 문서 객체모델(DOM)의 요소들도 모두 window 객체의 프로퍼티가 된다.
window 객체의 메서드는 전역함수, winodw 객체의 프로퍼티는 전역 변수가 된다.
window에 관한 자세한 내용은 다음 링크에서 추가로 확인 가능하다.
1. TCP SCHOOL / Window
2. mdn web docs / window
2. document
Document 객체는 웹 페이지 그 자체를 의미한다.
웹 페이지에 존재하는 HTML 요소에 접근하고자 할 때, 반드시 Document 객체부터 시작해야한다.
Html 요소의 선택과 생성, 이벤트 핸들러 추가, 객체의 선택 등을 진행할 수 있는 다양한 메서드를 제공한다.
document의 프로퍼티와 메서드는 다음 링크에서 확인 할 수 있다.
TCP SCHOOL / Document
3. navigator 객체
navigator는 운영체제에 대한 정보를 가지고 있는 객체를 말한다.
window.navigator 는 읽기 전용 속성으로 접근은 불가능하다.
웹 브라우저에 대한 버전을 비롯해 플러그인 설치 정보나 온/오프라인 등의 여러 정보를 담고 있기 때문에 이 객체 안에 있는 정보는 사용자가 수정할 수 없고 가져와서 보여줄 수 만 있다.
브라우저마다 문서를 랜더링 하는 엔진이 다른데, 아직 표준화 되지않은 CSS 속성 앞에는 브라우저 벤더를 의미하는 프리픽스(prefix)를 지정해야만 사용이 가능하다. 이를 벤더프리픽스 혹은 접두사라고 부른다.
이렇게 벤더프리픽스가 된 css는 웹 브라우저에서 문서를 불러올때 내장된 랜더링 엔진으로 소스를 해석한다.
브라우저마다 랜더링 엔진이 달라 벤더 프리픽스를 붙여 브라우저를 구별할 수 있다.
랜더링 엔진은 다른 말로 '레이아웃 엔진'이라고도 한다.
브라우저별 렌더링 엔진과 자바스크립트 엔진 | ||
브라우저 | 랜더링 엔진 | 자바스크립트 엔진 |
크롬(Chrome), 오페라(Opera) | 블링크(Blink) | V8 |
파이어폭스(Firefox) | 게코(Gecko) | 스파이더 몽키(SpiderMonky) |
인터넷 익스플로러(Internet Explorer) | 트라이덴트(Trident) | 차크라(Charkra) |
사파리(Safari) | 웹킷(webkit) | 자바스크립트 코어(JavascriptCore) |
navigator의 속성은 다음 링크로 연결하도록 하겠다.
mdn web docs : web API / Navigator
4.history 객체
// 기본형
history.속성;
history.메서드();
history.메서드(숫자);
속성 종류 | |
length | 방문기록에 저장된 목록의 갯수를 반환한다. |
메서드 종류 | |
back(숫자) | 이전 방문 사이트로 이동한다. 만약 아무런 숫자도 입력하지 않는다면, 1단계 이전 방문 사이트로 이동한다. |
foward(숫자) | 다음 방문 사이트로 이동한다. 만약 아무런 숫자도 입력하지 않는다면, 1단계 다음 방문 사이트로 이동한다. |
go(숫자) | 인수 자리에 음수나 양수를 넣을 수 있다. 음수를 넣으면 해당 숫자만큼 이전 사이트로 이동하고 양수가 들어가면 다음 방문 사이트로 이동한다. |
5. location 객체
location 객체는 현재 브라우저의 주소를 얻거나 새 문서를 블러올 때 사용할 수 있는 객체이다.
이 객체의 속성과 메소드를 사용하면 문서의 url 주소를 다양하게 해석하고 사용할 수 있다.
url이란?
호스트 이름(host name)과 파일 경로명 (path name)을 합쳐 URL(Uniform Resource Locator)라고 부른다.
URL은 브라우저가 웹 서버로 컨텐츠를 요청할 때, 해당 컨텐츠가 어디에 있는지 알려주기 위한 규약이다.
// 기본형
location.속성();
location.메서드();
속성 종류 | |
hash | url 중 #으로 시작하는 해시 부분의 정보를 담아 반환한다. |
host | url의 host 이름과 포트 번호를 담아 반환한다. |
hovstname | url host의 이름을 담아서 반환한다. |
href | 전체 url을 말한다. 이 값을 변경하면 해당 주소로 이동한다. |
pathname | url의 경로가 저장된다. |
port | url의 포트 번호를 담아 반환한다. |
protocol | url의 프로토콜을 저장한다.(http / https) |
password | 도메인 이름 앞에 username과 password를 함께 입력해서 접속하는 사이트에 url일 경우 username 정보를 저장한다. |
search | url 중 물음표(?)로 시작하는 검색 내용을 저장한다. 쿼리요청값 |
username | 도메인 이름 앞에 username을 함께 입력해서 접속하는 사이트의 url일 경우 username 정보를 저장한다. |
※ pssword와 username의 경우 보안에 취약하다는 단점 때문에 잘 사용하지 않는다.
메서드 종류 | |
assign() | 현재 문서에서 새 문서 주소를 할당해 새 문서를 가져온다. |
reload() | 현재 문서를 새로고침한다. |
replace() | 현재 url을 지우고 새로운 url 문서를 가지고 온다. |
toString() | 현재 문서의 url을 문자열로 반환한다. |
참고:
https://cobook.tistory.com/91
* HTTP: Hyper text transfer protocol
* protocol : 통신규약
* HTTPS: Hyper text transfer protocol Security
예시로 다음과 같이 href와 protocol을 사용해 보았다.
아래와 같이 썼을 경우, 화면에는 현재 창의 주소와 프로토콜이 출력된다.
document.write("<p>location.href : " + location.href + "</p>");
document.write("<p>location.protocol : " + location.protocol + "</p>");
이를 활용해 버튼도 만들 수 있는데, onclick이라는 속성을 활용하여 location.replace(주소)를 입력하면,
버튼을 클릭시 해당 주로소 이동하는 것을 볼 수 있다.
하지만 아래와 같은 버튼은 현재 페이지의 주소를 바꾸는 것이기 때문에 이전으로 돌아갈 수 없다는 단점이 있다.
<button type="button" onclick="location.replace('https://www.naver.com')">
naver
</button>
6. screen 객체
screen 객체는 사용자의 모니터 정보(속성)을 제공하는 객체로 모니터의 넓이나 높이 또는 컬러 표현 bit를 반환한다.
// 기본형
screen.속성;
속성 종류 | |
screen.width | 화면의 너비값을 반환한다. |
screen.height | 화면의 높이값을 반환한다. |
screen.availWidth | 작업표시줄을 제외한 화면의 너비 값을 반환한다. |
screen.availHeight | 작업표시줄을 제외한 화면의 높이 값을 반환한다. |
screen.colorDepth | 사용자의 모니터가 표현 가능한 컬러 bit를 반환한다. |
window 객체
window 객체는 웹 브라우저의 상태를 제어하고 자바스크립트의 최상위에 존재한다.
그래서 자바스크립트의 모든 객체는 window 객체 안에 포함된다.
window 객체의 프로퍼티는 주로 웹 브라우저 창의 정보를 가져오거나 값을 바꿀 때 사용한다.
프로퍼티를 사용하려면 아래 기본형을 사용한다.
// 기본형
window.프로퍼티(속성)명;
프로퍼티 종류
1. document
브라우저 창에 표시된 웹 문서에 접근할 수 있다.
document 객체 프로퍼티, 컬렉션, 메소드 (클릭)
2. frameElement
현재 창이 다른 요소 안에 표함되어 있을 경우 그 요소를 반환하고, 반대로 포함되어 있지 않다면 null을 반환한다.
3. 브라우저 넓이를 나타내는 프로퍼티 ★
innerHeight | 내용 영역의 높이를 나타낸다. |
innerWidth | 내용 영역의 너비를 나타낸다. |
outerHeight | 브라우저 창의 바깥 높이를 나타낸다. |
outerWidth | 브라우저 창의 바깥 넓이를 나타낸다. |
4. 브라우저가 모니터에서 떨어져 있는 정도를 나타내는 프로퍼티
screenX | 브라우저 창의 왼쪽 테두리가 모니터 왼쪽 테두리에서 떨어져있는 거리를 나타낸다. |
screenY | 브라우저 창의 위쪽 테두리가 모니터의 위쪽 테두리에서 떨어져있는 거리를 나타낸다. |
5. 스크롤 이동 정도를 나타내는 프로퍼티 ★
pageXoffset (=scrollX) | 스크롤 했을 때 수평으로 이동하는 픽셀 수를 나타낸다. |
pageYoffset (=scrollY) | 스크롤 했을 때 수직으로 이동하는 픽셀 수를 나타낸다. |
6. localStorage ★
웹 브라우저에서 데이터를 저장하는 로컬 스토리지를 반환한다.
데이터가 반 영구적으로 저장되어 브라우저를 종료해도 정보가 남아있다.
많은 정보를 저장할 수 는 없지만, 반 영구적으로 저장된다는 특성 때문에 개발할 때 자주 사용된다.
자세한 사용법은 아래 더보기에 있다.
개발자 도구(F12)의 Application에서 확인해 볼 수 있다.
Application의 Storage탭에 가면 Local storage와 Session storage, Cookies가 존재하는데,
모두 비슷한 역할로 사용할 수 있다.
하지만 쿠키는 다른 저장소에 비해 보안이 취약하기 때문에 실제로 잘 사용되진 않는다.
7. location
window 객체의 위치 또는 현재 url을 나타낸다.
8. name
브라우저 창의 이름을 가져오거나 수정할 수 있다.
9. parent
현재 창이나 서브 프레임의 부모를 뜻한다.
10. sessionStorage
웹 브라우저에서 데이터를 저장한느 세션 스토리지를 반환한다. 휘발성 저장 공간으로 브라우저를 종료하면 저장된 데이터가 모두 사라진다.
메서드 종류
1. alert()
알림창을 표시한다. 확인 버튼을 누르면 다음 줄의 코드를 실행한다.
2. blur()
현재 창에서 포커스를 제거한다.
3. close()
현재 창을 닫는다.
4. confirm()
확인 취소 창으로, 확인을 누르면 true를 반환하고 취소를 누르면 false를 반환한다.
5. focus()
현재 창에 포커스를 부여한다.
6. moveBy(x,y)
현재 창을 지정한 크기만큼 이동시킨다.
7. moveTo(x,y)
현재 창을 지정한 좌표로 이동시킨다.
8. open(경로, 창 이름, 창 옵션)
새로운 창을 여는 메서드이다.
열려고 하는 새로운 창의 경로를 입력하고 창의 이름을 지정해 준다음 옵션을 추가하여 실행한다.
창 이름 같은 경우는 이름을 지정해 주지 않을 경우 계속 새로운 창이 나타난다.
옵션은 left, top 속성을 이용해 위치를 지정하거나, widht, height 속성을 이용해 크기를 지정할 수 있다.
만약 위치를 지정하지 않으면 팝업창을 화면의 가장 좌측 상단에 나타난다.
//예시
window.open("popup.html", "popup", "width=500, height=400");
// 팝업창이 될 새로운 html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>팝업창</title>
</head>
<body>
<p>팝업창입니다.</p>
</body>
</html>
9. postMessage()
메세지를 다른 창으로 전달한다. -옛날 기능이라 현재는 잘 사용하지 않는다.
10. print()
현재 문서를 인쇄할 때 쓴다.
11. prompt()
사용자로부터 입력받은 내용을 문자열로 반환한다.
12. resizeBy()
지정한 크기 만큼 현재 창의 크기를 조절한다.
13. resizeTo()
지정한 크기 만큼 동적으로 브라우저 창의 크기를 조절한다.
14. sizeToContent()
내용에 맞게 창의 크기를 맞춘다.
15. scroll() ★
문서에서 특정 위치로 스크롤한다.
16. scrollBy() ★
지정한 크기 만큼씩 스크롤한다.
17. scrollTo() ★
지정한 위치까지 스크롤한다.
18. stop()
로딩을 중지한다.
'자바스크립트(JavaScript) > 자바스크립트' 카테고리의 다른 글
[JavaScript] 함수란? (0) | 2024.07.26 |
---|---|
[JavaScript] 일정한 시간 간격으로 코드 실행하고 중지시키기 / setInterval(), setTimeout() (0) | 2024.07.24 |
[JavaScript] 내장 객체(Built-in Object)의 종류 (0) | 2024.07.15 |
[JavaScript] 자바스크립트의 객체(Object)란? (0) | 2024.07.15 |
[JavaScript] continue 과 break 의 차이 (0) | 2024.07.12 |