[기본 개념] 2 | (2.2) 브라우저와 관련된 객체

728x90

[기본 개념] 2 | (2.2) 브라우저와 관련된 객체

1 객체

2 자바스크립트의 내장 객체

3> 브라우저와 관련된 객체

3 브라우저와 관련된 객체

 웹 브라우저가 열리면 가장 먼저 window 라는 객체가 만들어지고 그 하위 요소에 해당하는 객체들이 나타난다.

 


  window  

         

        ㅏㅡㅡ
  document  
ㅡㅡㅜㅡㅡ
area
         「  ¯¯ ¯¯
textarea

        ㅏㅡㅡ
navigator
        ㅏㅡㅡ
image
        ㅏㅡㅡ
button

        ㅏㅡㅡ
history
        ㅏㅡㅡ
  form  
ㅡㅡㅣㅡㅡ
text

        ㅏㅡㅡ
location
          ㄴㅡㅡ
anchor
        ㅏㅡㅡ
checkbox
   ㅣ   
          ㄴㅡㅡ

screen    
        ㅏㅡㅡ
fileUpload
           ㅣ   
          ㄴㅡㅡ

radio

 

자바스크립트의 내장 객체

 

종류 설명
window 브라우저 창이 열릴 때마다 하나씩 만들어짐. 브라우저 창 안의 요소 중 최상위
document 웹 문서마다 하나씩 있으며 <body> 태그를 만나면 만들어짐. 문서의 정보가 담겨있음
navigator 현재 사용하는 브라우저의 정보가 들어있음
history 현재 창에서 사용자의 방문 기록을 저장
location 현재 페이지의 URL 정보가 담겨있음
screen 현재 사용하는 화면 정보를 다룸

 

window 객체의 프로퍼티

 

 widow 객체는 웹 브라우저의 상태를 제어하며 자바스크립트의 최상위에 있다. 주로 웹 브라우저 창의 정보를 가져오거나 값을 바꿀 때 사용한다. 모든 객체는 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 객체는 기본 객체이므로 'window.'을 생략하여 사용한다.

 

종류 설명
alert( ) 알림 창 표시
blur( ) 현재 창에서 포커스를 제거
close( ) 현재 창을 닫음
confirm( ) [확인], [취소] 버튼이 있는 확인 창 표시
focus( ) 편재 창에 포커스를 부여
moveBy( ) 현재 창을 지정한 크기만큼 이동
moveTo( ) 현재 창을 지정한 좌표로 이동
open( ) 새로운 창을 엶
postMessage( ) 메시지를 다른 창으로 전달
print( ) 현재 문서를 인쇄
prompt( ) 프롬프트 창에 입력한 텍스트를 반환
resizeBy( ) 지정한 크기만큼 현재 창의 크기를 조절
resizeTo( ) 동적으로 브라우저 창의 크기를 조절
scroll( ) 문서에서 특정 위치로 스크롤 함
scrollBy( ) 지정한 크기만큼씩 스크롤 함
scrollTo( ) 지정한 위치까지 스크롤 함
sizeToContent( ) 내용에 맞게 창의 크기를 맞춤
stop( ) 로딩을 중지

 

새 브라우저 창을 여는 open( ) 메서드

 

기본형

window.open("경로", "창 이름", "창 옵션")

 

경로 팝업 창에 표시할 문서나 사이트의 경로(주소)를 나타냄

 

창 이름 팝업 창의 이름을 지정하면 지정한 창에만 팝업 내용이 나타나도록 할 수 있음

              지정하지 않고 새로고침 버튼을 누르면 팝업 창이 계속 새로 나타남

 

창 옵션 left, top 속성을 사용하고 width, height 속성을 사용하여 위치와 크기를 지정 (위치 기본값 맨 왼쪽 위)

 

(ex. 팝업 창 만들기)

 

...
<p>왼쪽에서 100px, 위에서 200px 떨어진 위치에 <br> 팝업 창이 표시된다.</p>
<script>
  window.open("notice.html", "pop", "width=500, height=400, left=100, top=200");
</script>
...

 

팝업 차단 고려하기

 

 최신 웹 브라우저나 보안 프로그램, 관련 유틸리티를 설치하면 웹 브라우저의 팝업이 자동으로 차단되기도 한다.

 

 중요한 내용을 팝업 창으로 보여줘야 한다면 팝업 차단된 상태인지 체크하여 알려주는 것이 좋다.

 

(ex. 팝업이 차단된 브라우저의 알림 창 표시하기)

 

...
<script>
  function openPopup() {
    var newWin = window.open("notice.html", "pop", "width=500, height=400");
    if(newWin == null) {	// 팝업 차단되어 있으면 알림 창 표시
      alert("팝업이 차단되어 있습니다. 팝업 차단을 해제해 주세요.")
    }
    newWin.moveBy(100, 100);
  }
</script>
...

 

브라우저 창을 닫는 close( ) 메서드

 

기본형

window.close( )

 

(ex. 버튼을 사용해 팝업 창 닫기)

 

...
<button onclick="javascript:window.slose();">닫기</button>
...

 

navigator 객체

 

 navigator 객체에는 웹 브라우저의 버전, 플러그인 설치 정보나 온/오프라인 등의 여러 정보가 담겨있다. 사용자가 수정할 수 없으며 읽기 전용이다.

 

웹 브라우저와 렌더링 엔진

 

 웹 브라우저마다 사용하는 렌더링 엔진이 다른데 마찬가지로 웹 브라우저마다 내장된 자바스크립트 엔진도 다르다.

 

 각 브라우저에 포함된 렌더링 엔진과 자바스크립트 엔진은 다음과 같다.

 

브라우저 렌더링 엔진 자바스크립트 엔진
크롬(Chrome) 블링크(Blink) V8
파이어폭스(Firefox) 게코(Gecko) 스파이더몽키(SpiderMonkey)
인터넷 익스플로러(Internet Explorer) 트라이덴트(Trident) 차크라(Chakra)
사파리(Safari) 웹킷(Webkit) 자바스크립트코어(JavascriptCore)
오페라(Opera) 블링크(Blink) V8

 

userAgent 프로퍼티 알아보기

 

 navigator 객체에서 userAgent 프로퍼티를 먼저 알아야 하는데, 이는 사용자의 웹 브라우저 정보를 서버에 보낼 때 사용한다.

 

// 크롬 userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/81.0.4044.138 Safari/537.36"

// 엣지 userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.72"

// 파이어폭스 userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"

 

 각 브라우저의 사용자 에이전트 문자열을 보면 Mozilla 라는 예약어로 시작하는데 이는 인터넷 초장기의 넷스케이프 사용자 에이전트 문자열과 호환하기 위해 넷스케이프 내비게이터에서 사용하는 Mozilla 라는 키워드를 사용한다.

 

 브라우저 중 다른 엔진을 사용하기도 하는데 예를 들어 인터넷 익스플로러 11의 경우 Trident 라는 엔진을 사용하고, 사용자 에이전트 문자열 중 Trident 가 포함되어 있는 것을 볼 수 있다.

 

// 인터넷 익스플로러 11
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

 

 크롬, 마이크로소프트 엣지, 사파리 브라우저는 모두 WebKit 엔진을 기반으로 하는데, 이 엔지는 KHTML 이라는 오픈소스 렌더링 엔진을 기반으로 한다. 따라서 사용자 에이전트 문자열에 KHTML 이 포함되어 있고, like Gecko 를 사용하여 기존 웹 브라우저와 호환된다고 알려준다.

 

사용자 에이전트 문자열

 

종류 설명
Mozilla/x.x 모질라 버전을 나타냄
Windows NT x.x 브라우저를 실행하는 컴퓨터 운영체제를 나타냄
Win64; x64 윈도우 64비트 기반을 나타냄
WOW64 윈도우 64비트 기반을 나타냄
Trident/x.x 트라이데트 엔진 버전을 나타냄
rv : x.x 브라우저 버전을 나타냄
AppleWebKit/x.x 웹킷 엔진의 빌드 번호를 나타냄
KHTML 오픈소스 렌더링 엔진인 KHTML을 의미
like Gecko 게코 기반의 다른 브라우저와 호환을 의미
Firefox/x.x 파이어폭스 브라우저 버전을 나타냄
Chrome/x.x 크롬 버전을 나타냄
Safari/x.x 사파리 브라우저의 빌드 번호를 나타냄

 

 최근에는 같은 자바스크립트 엔진을 사용하는 브라우저가 많아서 사용자 에이전트 문자열의 내용이 겹치므로 사용하지 않는 추세다.

 

navigator 객체의 주요 프로퍼티

 

종류 설명
battery 배터리 충전 상태를 알려줌
cookieEnabled 쿠키 정보를 무시하면 false, 허용하면 true 반환
geolocation 모바일 기기를 이용한 위치 정보 나타냄
language 브라우저 UI의 언어 정보를 나타냄
oscpu 현재 운영체제 정보를 나타냄
userAgent 현재 브라우저 정보를 담고 있는 사용자 에이전트 문자열

 

history 객체

 

 history 객체는 브라우저에서 방문한 사이트 주소가 배열 형태로 저장된다. 브라우저 히스토리는 보안 문제 때문에 읽기 전용이다.

 

history 객체의 프로퍼티와 메서드

 

구분 설명
프로퍼티 length 현재 브라우저 창의 history 목록에 있는 항목의 개수, 즉 방문한 사이트 개수가 저장
메서드 back( ) history 목록에서 이전 페이지를 현재 화면으로 불러옴
forward( ) history 목록에서 다음 페이지를 현재 화면으로 불러옴
go( ) history 목록에서 현재 페이지를 기준으로 상대적인 위치에 있는 페이지를 현재 화면으로 불러옴
(history.go(1) : 다음 페이지, history.go(-1) : 이전 페이지)

 

location 객체

 

 location 객체는 현재 문서의 URL 주소 정보가 들어가 있는데, 브라우저의 주소 표시줄과 관련된다.

 

location 객체의 프로퍼티와 메서드

 

구분 설명
프로퍼티 hash URL 중에서 #로 시작하는 해시 부분의 정보를 담음
host URL의 호스트 이름과 포트 번호를 담음
hostname URL의 호스트 이름이 저장
href 전체 URL. 이 값을 변경하면 해당 주소로 이동
pathname URL의 경로 저장
port URL의 포트 번호를 담음
protocol URL의 프로토콜 저장
password 도메인 이름 앞에 username, password를 입력해서 접속하는 URL일 경우 password 정보 저장
search URL 중에서 ?로 시작하는 검색 내용 저장
username 도메인 이름 앞에 username을 입력해서 접속하는 URL일 경우 username 정보 저장
메서드 assign( ) 현재 문서에 새 문서 주소를 할당하여 새 문서를 가저옴
reload( ) 현재 문서를 다시 불러옴
replace( ) 현재 문서의 URL을 지우고 다른 URL의 문서로 교체
toString( ) 현재 문서의 URL을 문자열로 반환

 

 replace( ) 메서드를 이용하면 현재 문서의 주소가 새로운 주소로 대체되므로 브라우저 창의 [뒤로] 버튼이 활성화되지 않는다.

 

(ex. 사이트 이동하기)

 

<button onclick="location.replace('http://www.easyspub.com')">홈페이지로 이동하기</button>

 

screen 객체

 

 screen 객체는 사용자의 화면 크기나 정보가 있는데, 화면 방향을 잠그거나 잠근 화면방향을 해제하는 역할을 한다.

 

screen 객체의 프로퍼티와 메서드

 

구분 설명
프로퍼티 availHeight UI 영역(윈도우 작업 표시줄이나 Mac의 독)을 제외한 영역의 높이를 나타냄
availWidth UI 영역을 제외한 내용 표시 영역의 너비를 나타냄
colorDepth 화면에서 픽셀을 렌더링할 때 사용하는 색상 수를 나타냄
height UI 영역을 포함한 화면의 높이를 나타냄
orientation 화면의 현재 방향을 나타냄
pixelDepth 화면에서 픽셀을 렌더링할 때 사용하는 비트 수를 나타냄
width UI 영역을 포함한 화면의 너비를 나타냄
메서드 lockOrientation( ) 화면 방향을 잠금
unlockOrientation( ) 화면 방향 잠금을 해제

 

 

 

 

 

 

 

출처 | Do it! HTML+CSS+자바스크립트 웹 표준의 정석(고경희)

728x90