onunload, onbeforeunload 시 새로고침 문제
JS
2008. 6. 5. 01:15
onunload , onbeforeunload 이벤트가 창을 닫을 때 이벤트가 실행된다.
문제는 저 이벤트는 새로고침 시에도 발생하므로, 로그인 중복체크 등이나 사용자 세션을 강제로 끊어줄 때 등등의 사용에 적합하지 않는다. 대신 아래와 같이 사용하면, 이벤트 발생이 새로고침인지 다른사이트 이동인지 알 수 있다.
<script language="javascript">
function Exit() {
if (self.screenTop > 9000) {
alert('닫힘');
// 브라우저 닫힘
} else {
if(document.readyState == "complete") {
alert('새로고침');
// 새로고침
} else if(document.readyState == "loading") {
alert('이동');
// 다른 사이트로 이동
}
}
}
</script>
<script language="javascript" event="onunload" for="window">
Exit();
</script>
다만, 글쓰기 같은 페이지에는 새로고침을 확인해서 입력되고 있는 내용이 사라지지 않도록 확인해 주는 센스가 필요하겠다.