자바스크립트 location, history, screen, navigator 객체 정리
📌 1. location 객체 – 현재 URL 정보 & 페이지 이동
✅ 주요 프로퍼티
| 속성 | 설명 |
|---|---|
href |
전체 URL 주소 |
hostname |
도메인 이름 (예: www.example.com) |
pathname |
파일 경로 (/about/index.html) |
hash |
# 이후 문자열 |
search |
쿼리 문자열 (?key=value) |
port |
포트 번호 (예: 443, 8080) |
✅ 주요 메소드
| 메소드 | 설명 |
|---|---|
assign(url) |
새 페이지로 이동 (뒤로 가기 가능) |
replace(url) |
새 페이지로 이동 (기록 덮어쓰기) |
reload() |
페이지 새로 고침 (F5 효과) |
location.href = "https://example.com"; // 이동
location.reload(); // 새로고침
🔙 2. history 객체 – 브라우저 방문 기록 제어
✅ 주요 메소드 및 프로퍼티
| 메소드/속성 | 설명 |
|---|---|
length |
방문한 페이지 수 |
back() |
이전 페이지로 이동 |
forward() |
다음 페이지로 이동 |
go(n) |
n만큼 앞(+) 또는 뒤(-)로 이동 |
history.go(-1); // 이전 페이지
history.forward(); // 다음 페이지
🖥️ 3. screen 객체 – 모니터 정보
| 속성 | 설명 |
|---|---|
width / height |
전체 해상도 (픽셀 단위) |
availWidth / availHeight |
실제 사용 가능한 영역 (작업표시줄 제외) |
colorDepth |
색상당 비트 수 (보통 24) |
pixelDepth |
픽셀당 비트 수 (보통 colorDepth와 동일) |
console.log(screen.width, screen.height); // 1920 x 1080
🌐 4. navigator 객체 – 브라우저/OS 정보
| 속성 | 설명 |
|---|---|
appName |
브라우저 이름 (대부분 “Netscape”) |
appVersion |
브라우저 버전 |
userAgent |
상세 브라우저 정보 문자열 |
platform |
운영체제 정보 (Windows, Mac 등) |
language |
기본 언어 코드 (예: “ko”, “en-US”) |
cookieEnabled |
쿠키 허용 여부 (true/false) |
javaEnabled() |
자바 애플릿 사용 가능 여부 (비표준) |
console.log(navigator.language); // "ko"
console.log(navigator.cookieEnabled); // true or false
✅ 종합 예제: 현재 상태 출력
<script>
document.write("▶ 현재 URL: " + location.href + "<br>");
document.write("▶ 호스트: " + location.hostname + "<br>");
document.write("▶ 경로: " + location.pathname + "<br>");
document.write(
"▶ 스크린 해상도: " + screen.width + "x" + screen.height + "<br>"
);
document.write("▶ OS: " + navigator.platform + "<br>");
document.write("▶ 언어: " + navigator.language + "<br>");
document.write(
"▶ 쿠키 가능: " + (navigator.cookieEnabled ? "Yes" : "No") + "<br>"
);
</script>
⚠️ 주의 사항
navigator.appName,appVersion등은 구식/신뢰도 낮음- *기능 감지(feature detection)**가 더 안전한 접근 방식
- 일부 브라우저는 속성 제한 또는 팝업 차단, 쿠키 차단 설정으로 정확한 정보 제공이 제한될 수 있음
질문 정리
Q1. location.href와 assign()의 차이는?
A: href = "url"은 즉시 이동하며 히스토리에 남습니다. assign()도 동일. 반면, replace()는 기록을 덮어씁니다.
Q2. navigator.userAgent로 브라우저 구분해도 되나요?
A: 기본적으로는 가능하지만, 변조 가능성이 높아 권장하지 않습니다.
Q3. 새 창 팝업이 안 열려요!
A: 팝업 차단기가 작동 중일 수 있습니다. 사용자의 명시적 이벤트(예: 클릭)로만 열리는 경우가 많습니다.
댓글남기기