BOM(Browser Object Model)이란?
- 웹 브라우저를 제어하기 위해서 브라우저가 제공하는 객체들
- Document 객체
- History 객체
- 현재의 브라우저가 접근했던 URL history
- Location 객체
- 현재 URL에 대한 정보, 브라우저에서 사용자가 요청하는 URL
- Navigator 객체
- Screen 객체
- Window 객체
- 최상위 객체(= 전역 객체)로, 각 프레임별로 하나씩 존재
사용자와의 커뮤니케이션
- alert(“문자열” 또는 변수명);
- confirm(“문자열”);
- 확인/취소를 띄우는 선택창을 띄우는 기능, 값은 true/false 반환
- prompt(“문자열”);
Location 객체란?
Navigator 객체란?
- 브라우저의 정보를 알려주는 객체
- 속성
- appName
- 웹 브라우저의 이름.
- IE
- Microsoft Internet Explorer
- 파이어폭스, 크롬 등
- appVersion
- userAgent
- 브라우저가 서버측으로 전송하는 USER-AGENT HTTP 헤더의 내용
- appVersion과 비슷함
- platform
- 브라우저가 동작하고 있는 운영체제에 대한 정보
창 제어
- window.open(URL, Window_Name, option)
- URL
- 새 창에 로드할 문서의 URL이다.
- 인자를 생략하면 이름이 붙지 않은 새 창이 만들어진다.
- Window_Name
- 새 창의 이름
- 종류
- ‘_self’ : 스크립트가 실행되는 탭
- ‘_blank’ : 새 탭
- ‘이름’ : 이름 정의, open을 재실행시 동일한 이름의 탭이나 창이 있다면 그 곳으로 로드
- option
- 옵션을 지정해서 부여, 옵션이 여러개일 때는 쉼표로 연결, 옵션을 지정하면 새 탭이 아니라 새 창이 띄워진다.
- 종류
- width=n : 팝업 창의 가로 길이
- height=n : 팝업 창의 세로 길이
- toolbar=yes/no : 단축 도구창 (=툴바) 표시 여부
- menubar=yes/no : 메뉴창 (=메뉴바) 표시 여부
- location=yes/no : 주소창 표시 여부
- scrollbars=yes/no : 스크롤바의 표시 여부
- status=yes/no : 아래 상태바 창의 표시 여부
- resizable=yes/no : 창의 크기 변형 가능 여부
- fullscreen=yes/no : 전체화면 여부
- channelmode=yes/no : 채널 모드 여부 (F11 키의 기능과 동일)
- left=n : (0, ???)에서 (n,???)에 창을 고정
- top=n : (???, 0)에서 (???, n)에 창을 고정
- 상호 작용
- 보안성
- 크롬에서는 로컬파일로 실행시키면 Same-origin policy 때문에
브라우저자체에서 iframe이나 window.open(…)과 통신을 막아 동작하지 않는다. - 만약 기존의 창과 새로 띄운 창의 도메인이 다른 경우에는
기존의 창에서 새로 띄운 창의 내용을 바꿀 수 있는 작업을 할 수 없다. - 웹 브라우저 제작 회사 측에서 버튼을 클릭한 것이 아니라 스크립트 상에서
window.open(…);으로 바로 띄우는 창같은 경우에는
그것은 사용자의 의지가 아니라고 판단하여 기본적으로 팝업 차단을 해두었다.
만약, 해당 페이지에 대한 팝업 허용을 하면 사용가능하다.