올바른 이해와 사용 방법
자바스크립트에서 새 창이나 새 탭으로 페이지를 열려면 window.open() 메서드를 사용합니다.
이때, 매개변수에 열어야 할 URL을 문자열로 지정합니다.
자바스크립트로 현재 페이지를 유지한 채 다른 URL로 이동할 때 활용합니다.
구문
window.open("https://example.com");
예제
onclick 속성으로 버튼을 클릭했을 때, 새 창/새 탭으로 페이지 이동시키기
<button type="button" onclick="window.open('https://example.com')">onclick 속성으로 이동하기</button>
addEventListener() 메서드로 버튼을 클릭했을 때, 새 창/새 탭으로 페이지 이동시키기
<button type="button" id="href-btn">addEventListener() 메서드로 이동하기</button>
<script>
const hrefBtn = document.getElementById("href-btn");
hrefBtn.addEventListener("click", () => {
window.open("https://example.com");
});
</script>
팝업 차단(Block) 주의사항
브라우저는 사용자 의도 없이 실행되는 window.open() 호출을 팝업 차단 정책 대상으로 판단하여 차단할 수 있습니다.
이는 사용자가 원하지 않는 새 창(예: 광고, 스팸 등)이 자동으로 열리는 것을 방지하기 위한 정책입니다.
일반적으로 다음과 같은 경우에는 정상적으로 동작합니다.
- 사용자의 의도적 행위에 의한 이벤트(클릭, 터치, 제출 등)로 실행되는 경우
반대로 다음과 같은 경우에는 차단될 수 있습니다.
- 페이지 로드 시, 또는 로드 후 자동 실행되는 경우
- 비동기 처리(
Ajax,Fetch,setTimeout,setInterval등) 이후 콜백에서 실행되는 경우
사용자가 클릭과 같은 명시적인 동작으로 실행하지 않은 window.open() 호출은 브라우저의 팝업 차단 정책에 의해 차단될 수 있습니다.
이는 사용자 동작과 연결되지 않은 새 창 열기를 제한하기 위한 브라우저 정책입니다.
명세서
| 명세서 사양 | |
|---|---|
window.open()
|
HTML #dom-open-dev |
브라우저 호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
window.open()
|
1 | 12 | 1 | 1 |