포스트

HTML 앵커 태그로 열린 새 페이지 닫기

문제상황 및 해결방법

웹 페이지에서 HTML 앵커 태그(<a>)를 사용하여 새 창이나 새 탭을 열고 나서, 그 새로 열린 페이지를 프로그래밍적으로 닫으려는 경우가 있다. 대표적인 오류는 Window.close() 함수를 이용할 때 발생하는 Scripts may close only windows that were opened by it 오류다. 이 글에서는 이러한 문제를 해결하는 몇 가지 방법을 살펴볼 것이다.

자바스크립트를 이용한 해결법

이 문제를 해결하는 가장 간단한 방법은 자바스크립트의 window.open()window.close() 메서드를 사용하는 것이다. window.open() 메서드로 열린 새 창이나 새 탭은 같은 자바스크립트에서 window.close() 메서드를 사용하여 닫을 수 있다.

1
2
3
4
5
// 새 창 열기
let newWindow = window.open('https://www.example.com');

// 새 창 닫기
newWindow.close();

HTML과 자바스크립트 혼용

HTML의 앵커 태그를 사용해야만 하는 경우, JavaScript를 이용하여 태그의 동작을 제어할 수 있다.

1
<a href="https://www.example.com" id="myLink">새 창 열기</a>
1
2
3
4
5
6
document.getElementById('myLink').onclick = function() {
  let newWindow = window.open(this.href);
  // 새 창을 닫는 로직 추가
  setTimeout(() => { newWindow.close(); }, 5000);
  return false;
};

주의사항

window.close() 함수는 오직 같은 스크립트에서 열린 창만 닫을 수 있다는 점을 명심해야 한다. 이 외의 경우에는 보안 문제로 인해 브라우저에서 이를 허용하지 않는다.

결론

HTML 앵커 태그로 열린 새 페이지를 닫는 것은 보안 문제로 인해 제한되어 있지만, 자바스크립트를 활용하여 이 문제를 우회할 수 있다. 특히 window.open()window.close() 메서드를 적절히 사용하면 원하는 동작을 구현할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.