본문 바로가기
JavaScript

referer 포함하는 popup 만들기

by 누피짱 2008. 11. 21.

IE에서 window.open(url)로 열리는 팝업의 경우 GET 요청 헤더에 referer 정보를 포함하지 않습니다. Referer를 체크해서 뭔가를 하는 경우(제가 일하는 곳에서는 주로 방문 집계등과 같은 통계 정보를 추출하기 위해 사용합니다)에 문제가 됩니다.

일반적으로 팝업창을 여는 코드는 다음과 같습니다.

<a href="http://www.daum.net/" onclick="window.open(this.href, 'popup','width=800,height=400').focus();return false;">Open Popup window</a>

위의 코드를 IE에서 실행한 후 Fiddler 등으로 확인해 보면 referer 정보가 없다는 것을 확인할 수 있습니다. 다른 브라우저에서는 referer가 존재합니다(사실 정확히는 모르겠지만 IE에서만 그렇다는…). 그래서 이 코드를 다음과 같시 수정했더니 referer가 포함되네요.

<a href="http://www.daum.net/" target="popup" onclick="window.open('', 'popup','width=800,height=400').focus();">Open Popup window</a>

원리는 onclick 이벤트 시 url을 명시하지 않고 창을 연 다음, 링크의 타겟을 해당 창 이름으로 설정하는 방식입니다. 주의할 점은 onclick 이벤트에서 return false;를 하지 않도록 해서 기본 동작(링크 이동)을 수행한다는 점입니다.

약간 걱정되는 것은 혹시 window.open()의 동작과 페이지 열기가 비동기적으로 동작해서(페이지 열기 후 window.open()이 실행되는?) 팝업창의 속성이 제대로 안먹히면 어쩌나 하는 걱정이. ^^;

댓글