일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스프링 빈
- 리눅스
- Kotlin
- 백준 javascript
- 백준 java
- toCharArray
- 리눅스마스터 3과목
- 고잉버스
- JavaScript
- GoingBus
- 리눅스마스터1급
- Java
- 문자열
- 명령어
- 개발자 회고록
- java 백준 1차원 배열
- 코테
- 스프링 컨테이너
- 자바
- map
- 카카오
- 월간코드챌린지
- 리눅스마스터 1급 정리
- 코딩테스트
- 연습문제
- Linux
- 자바스크립트 코딩의 기술
- 반복문
- 프로그래머스
- Memoir
- Today
- Total
hoon's bLog
Javascript BOM 브라우저 객체 모델 사용 본문
브라우저 객체 모델(BOM, Browser Object Model)이란?
- 브라우저의 정보에 접근하거나 브라우저의 여러 기능들을 제어 가능
- 브라우저 객체 모델(BOM)은 문서 객체 모델(DOM)과는 달리 W3C의 표준 객체 모델 X
- 하지만 이 모델은 자바스크립트가 브라우저의 기능적인 요소들을 직접 제어하고 관리할 방법을 제공
- BOM 모델의 객체들을 전역 객체(global object)로 사용 가능
Window 객체
- window 객체는 웹 브라우저의 창(window)을 나타내는 객체로, 대부분의 웹 브라우저에서 지원
- 자바스크립트의 모든 객체, 전역 함수, 전역 변수들은 자동으로 window 객체의 프로퍼티가 됨
- window 객체의 메서드는 전역 함수이며, window 객체의 프로퍼티는 전역 변수가 됨.
- 문서 객체 모델(DOM)의 요소들도 모두 window 객체의 프로퍼티가 됨.
브라우저 창 크기 조절
window 객체의 innerHeight와 innerWidth 프로퍼티를 이용하면, 브라우저의 창 크기를 설정 할 수 있음
여기서 브라우저 창이란 웹 브라우저의 뷰포트(viewport)를 의미하며, 브라우저의 툴바나 스크롤 바는 포함 X
// 기본 문법
window.innerHeight
window.innerWidth
// 익스플로러 5부터 7버전만을 위한 문법 1
document.documentElement.clientHeight
document.documentElement.clientWidth
// 익스플로러 5부터 7버전만을 위한 문법 2
document.body.clientHeight
document.body.clientWidth
// 다음 는 위 문법들을 이용하여 모든 브라우저에서 창의 크기를 반환하는
var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
document.write("웹 브라우저의 너비는 " + windowWidth + "픽셀이고, 높이는 " + windowHeight + "픽셀입니다.");
// window 객체의 모든 메서드나 프로퍼티를 사용할 때는 window라는 접두사를 생략 가능
// 따라서 위의 에서 window.innerWidth 대신 그냥 innerWidth를 사용해도 정상적으로 동작
alert("전역 함수 호출시 window 접두사 생략 가능함!"); // 전역 함수
document.write("현재 브라우저의 수평 위치는 " + screenX + "입니다.<br>"); // 전역 변수
document.write("현재 브라우저의 수직 위치는 " + screenY + "입니다.<br>"); // 전역 변수
document.write(document.title); // 전역 객체
- 위의 예제처럼 자바스크립트의 모든 전역 객체, 전역 함수, 전역 변수를 사용할 때는 window 접두사를 생략 가능
- screenX는 해당 브라우저 창의 왼쪽 모서리와 사용자 스크린의 왼쪽 모서리 사이의 거리를 반환
- 또한, screenY는 해당 브라우저 창의 위쪽 모서리와 사용자 스크린의 위쪽 모서리 사이의 거리를 반환
브라우저 새 창 열기
- window 객체의 open() 메서드를 이용하면, 새로운 브라우저 창을 열 수 있음
- 또한, 새로운 브라우저 창의 세부적인 옵션들도 일일이 설정 할 수 있음
브라우저 창 닫기
window 객체의 close() 메서드를 이용하면, 현재 브라우저나 특정 브라우저 창을 닫기 가능
// 메뉴바, 주소창, 크기조절 손잡이, 스크롤 바, 상태 바만을 가지는 새로운 브라우저 창을 여는 예제
var newWindowObj;
// 변수 strWindowFeatures를 통해 새롭게 여는 브라우저 창의 옵션들을 일일이 설정할 수 있음.
var strWindowFeatures = "menubar = yes,location = yes,resizable = yes,scrollbars = yes,status = yes";
function openWindow() {
newWindowObj = window.open("/html/intro", "HTML 개요", strWindowFeatures);
}
function openWindow2() {
newWindowObj = window.open("/html/intro", "HTML 개요", strWindowFeatures);
}
function closeNewWindow() { // 새롭게 연 브라우저 창을 window 객체를 이용하여 다시 닫을 수 있음.
newWindowObj.close();
}
Document 객체
- window 객체의 가장 중요한 프로퍼티 중 하나가 바로 document 객체
- document 객체는 브라우저 창에 표시되는 내용에 해당하는 문서(document)를 나타내는 객체
Location 객체
- 현재 브라우저에 표시된 HTML 문서의 주소를 얻거나, 브라우저에 새 문서를 불러올 때 사용 가능
- 이 객체는 Window 객체의 location 프로퍼티와 Document 객체의 location 프로퍼티에 같이 연결됨!
- location 객체의 프로퍼티와 메서드를 이용하면, 현재 문서의 URL 주소를 다양하게 해석하여 처리 가능
- 현재 문서의 URL 주소 : location 객체의 href 프로퍼티는 현재 문서의 전체 URL 주소를 문자열로 반환
document.write("현재 문서의 주소는 " + location.href + "입니다.");
//location 객체의 hostname 프로퍼티는 현재 문서의 인터넷 호스트 이름을 반환
document.write("현재 문서의 호스트 이름은 " + location.hostname + "입니다.");
host, hostname, port, hash와 같은 location 객체의 주요 프로퍼티는 URL 주소의 다양한 특성을 저장!
이와 같은 프로퍼티는 Link 객체를 통해서도 제공
호스트 이름(host name)과 파일 경로명(path name)을 합쳐 URL(Uniform Resource Locator)
이러한 URL은 브라우저가 웹 서버로 컨텐츠를 요청할 때, 해당 컨텐츠가 어디에 있는지를 알려주기 위한 규약
// location 객체의 pathname 프로퍼티는 현재 문서의 파일 경로명을 반환
document.write("현재 문서의 파일 경로명은 " + location.pathname + "입니다.");
assign() : 브라우저 창에 지정된 URL 주소에 존재하는 문서를 불러옴
replace() : 새 문서를 불러오기 전에, 현재 문서를 브라우저의 히스토리에서 제거(뒤로가기 X)
reload() : 브라우저 창에 현재 문서를 다시 불러옴!
function openDocument() {
location.assign("/index.php");
}
function openDocumentWithReplace() {
location.replace("/index.php");
}
History 객체
- 브라우저의 히스토리 정보를 문서와 문서 상태 목록으로 저장하는 객체
- 사용자의 개인 정보를 보호하기 위해 이 객체에 접근하는 방법을 일부 제한
- 히스토리 목록의 개수 : history 객체의 length 프로퍼티는 브라우저 히스토리 목록의 개수를 반환
function openDocument() {
location.assign("/javascript/js_bom_history");
}
document.getElementById("text").innerHTML = "현재 브라우저의 히스토리 목록의 개수는 " + history.length + "개 입니다.";
히스토리 목록 접근하기
//아래 이전페이지로 가는 버튼은 같은 기능!
// 이전 페이지로 가기
function goBack() {
window.history.back();
}
// 이전 페이지로 가기
function go() {
window.history.go(-1);
}
//다음 페이지로 가기
function goForward() {
window.history.forward();
}
Screen 객체
- 사용자의 디스플레이 화면에 대한 다양한 정보를 저장하는 객체
- 사용자의 화면 크기 : screen 객체의 width와 height 프로퍼티는 사용자의 디스플레이 화면의 크기를 픽셀 단위로 반환
- screen.width와 screen.height는 현재 사용자의 모니터 화면의 크기를 반환
- window.outerWidth와 window.outerHeight는 현재 브라우저 창의 크기를 반환
실제 사용할 수 있는 화면 크기
- availWidth와 availHeight 프로퍼티는 실제 사용할 수 있는 화면의 크기를 픽셀 단위로 반환
- 운영체제의 작업 표시줄과 같은 공간을 모두 제외한 크기를 반환
한 색상당 사용할 수 있는 비트수
- screen 객체의 colorDepth 프로퍼티는 사용자 화면에서 한 색상당 사용할 수 있는 비트 수를 반환
- 대부분의 컴퓨터는 24비트의 트루 컬러(true colors)나 30/36/48비트의 디프 컬러(deep colors)를 사용
- 트루 컬러에서 한 색상당 사용할 수 있는 비트 수는 224 = 16,777,216
화면 픽셀당 표시할 수 있는 비트수
- screen 객체의 pixelDepth 프로퍼티는 사용자 화면에서 픽셀당 표시할 수 있는 비트 수를 반환
- 대부분의 컴퓨터에서 colorDepth와 pixelDepth는 같은 값을 가짐
Navigator 객체
- 브라우저 공급자 및 버전 정보 등을 포함한 브라우저에 대한 다양한 정보를 저장하는 객체
- 이 객체의 이름은 넷스케이프(Netscape)의 초기 웹 브라우저였던 네비게이터(Navigator)에서 유래
브라우저 스니핑(browser sniffing)
과거에는 방문자의 웹 브라우저의 종류를 미리 파악하여 조치함으로써, 브라우저 간의 호환성을 유지
document.write("현재 사용자의 디스플레이 화면의 너비는 " + screen.width + "픽셀입니다.<br>");
document.write("현재 사용자의 디스플레이 화면의 높이는 " + screen.height + "픽셀입니다.<br>");
document.write("현재 브라우저 창의 너비는 " + window.outerWidth + "픽셀입니다.<br>");
document.write("현재 브라우저 창의 높이는 " + window.outerHeight + "픽셀입니다.<br>");
document.write("실제 사용할 수 있는 화면의 너비는 " + screen.availWidth + "픽셀입니다.<br>");
document.write("실제 사용할 수 있는 화면의 높이는 " + screen.availHeight + "픽셀입니다.");
var bitColorDepth = screen.colorDepth;
document.write("사용자 화면에서 한 색상당 사용할 수 있는 비트수는 " + bitColorDepth + "개입니다.<br>");
document.write("즉, 한 색상은 총 " + Math.pow(2, bitColorDepth) + "가지로 표현됩니다.");
var bitPixelDepth = screen.pixelDepth;
document.write("사용자 화면의 한 픽셀당 표시할 수 있는 비트수는 " + bitPixelDepth + "개입니다.<br>");
document.write("현재 사용 중인 브라우저의 이름은 " + navigator.appName + "입니다.<br>");
document.write("또한, 해당 브라우저의 코드명은 " + navigator.appCodeName + "입니다.");
document.write("현재 사용 중인 브라우저의 버전 정보는 " + navigator.appVersion + "입니다.<br><br>");
document.write("userAgent 프로퍼티로 알 수 있는 추가 정보는 " + navigator.userAgent + "입니다.");
document.write("현재 브라우저가 실행되고 있는 운영체제는 " + navigator.platform + "입니다.");
document.write("현재 브라우저의 기본 언어 설정은 " + navigator.language + "입니다.");
자바 애플릿 실행 여부
javaEnabled() : 현재 사용 중인 브라우저가 자바 애플릿을 실행할 수 있는지를 검사하는 비표준 메서드
쿠키(cookie) 사용 여부
cookieEnabled : 현재 사용 중인 브라우저가 쿠키를 사용할 수 있는지를 검사하는 비표준 프로퍼티
document.write("현재 브라우저는 자바 애플릿를 ");
if (navigator.javaEnabled()) {
document.write("실행 가능");
} else {
document.write("실행할 수 없습니다.");
}
document.write("현재 브라우저는 쿠키를 ");
if (navigator.cookieEnabled) {
document.write("사용 가능");
} else {
document.write("사용할 수 없습니다.");
}
대화 상자(dialog box)
alert()
- 사용자에게 간단한 메시지를 보여주고, 그에 대한 사용자의 확인을 대기함.
- 사용자는 대화 상자의 확인 버튼을 눌러야만 다른 작업을 진행 가능
- window 객체의 모든 메서드나 프로퍼티를 사용할 때 window 접두사 생략가능
window.alert("간단한 메시지");
function alertDialogBox() {
alert("확인을 누를 때까지 다른 작업을 할 수 없어요!");
}
confirm()
사용자에게 간단한 메시지를 보여주고, 사용자가 확인(true)이나 취소(false)를 누르면 그 결과를 불리언 값으로 반환
window.confirm("간단한 메시지");
function confirmDialogBox() {
var str;
if (confirm("확인이나 취소를 눌러주세요!") == true) {
str = "당신은 확인을 눌렀습니다!";
} else {
str = "당신은 취소을 눌렀습니다!";
}
document.getElementById("text").innerHTML = str;
}
prompt()
- 사용자에게 간단한 메시지를 보여주고, 사용자가 입력한 문자열을 반환
- 사용자가 대화 상자에 입력한 텍스트를 문자열 타입으로 반환
window.prompt("간단한 메시지" + "입력란의 기본 메시지");
function promptDialogBox() {
var inputStr = prompt("당신의 이름을 입력해 주세요 : ", "홍길동");
if (inputStr != null) {
document.getElementById("text").innerHTML = "당신의 이름은 " + inputStr + "입니다.";
}
}
타이머(timer)
setTimeout()
- setTimeout() 메서드는 명시된 시간이 지난 뒤에 지정된 함수를 호출
- 이 메서드가 성공적으로 호출되면, 설정된 timeoutID를 반환
이 메서드는 밀리초(milliseconds) 단위로 지연 시간을 설정 할 수 있음 - window.setTimeout(호출할함수, 지연시간);
function startTimeout() {
setTimeout(printCurrentDate, 2000);
}
function printCurrentDate() {
document.getElementById("date").innerHTML = new Date();
}
setInterval()
- setInterval() 메서드는 지정된 시간 간격마다 지정된 함수를 반복적으로 호출
- 이 메서드가 성공적으로 호출되면, 설정된 timeoutID를 반환
- 밀리초(milliseconds) 단위로 시간 간격을 설정 할 수 있음
window.setInterval(호출할함수, 지연시간);
function startInterval() {
setInterval(printCurrentDate, 2000);
}
function printCurrentDate() {
document.getElementById("date").innerHTML += new Date() + "<br>";
}
clearTimeout()
- setTimeout() 메서드의 반환값을 clearTimeout() 메서드의 인수로 전달하면, 계획된 함수의 호출을 취소 가능
- 이 메서드는 setTimeout() 메서드에 의해 함수가 호출되기 전에 실행되어야 호출을 취소 가능
- 함수가 호출된 이후에 이 메서드를 호출하면 동작 X
window.clearTimeout(timeoutID);
var timeoutId;
function startTimeout() {
timeoutId = setTimeout(printCurrentDate, 2000);
}
function cancelTimeout() {
clearTimeout(timeoutId);
}
function printCurrentDate() {
document.getElementById("date").innerHTML += new Date() + "<br>";
}
clearInterval() : setInterval() 메서드의 반환값을 clearInterval() 메서드의 인수로 전달하면, 반복되는 함수의 호출을 취소 가능
window.clearInterval(timeoutID);
var timeoutId;
function startInterval() {
timeoutId = setInterval(printCurrentDate, 2000);
}
function cancelInterval() {
clearInterval(timeoutId);
}
function printCurrentDate() {
document.getElementById("date").innerHTML += new Date() + "<br>";
}
Reference
https://www.tcpschool.com/javascript/js_bom_window
'IT > Javascript' 카테고리의 다른 글
Javascript 예외 처리 try catch, exception (0) | 2023.07.02 |
---|---|
Javascript 이벤트, 이벤트 리스너 개념 및 사용 (0) | 2023.06.29 |
Javascript 노드 Node 사용법 및 조작 (0) | 2023.06.17 |
Javascript 문서 객체 모델 DOM 객체 (0) | 2023.06.15 |
Javascript Array 객체 Object (0) | 2023.06.14 |