IT정보사전

[JavaScript] Window창 닫았을때 onUnload, onBeforeunload 본문

웹 프로그래밍

[JavaScript] Window창 닫았을때 onUnload, onBeforeunload

작은나무0530 2010. 3. 17. 15:34
728x90
반응형
<script>
var alterffourflag=0;
var lastkey=0;
var refreshflag=0;

document.onkeydown = function ( event ) {
    event = event || window.event;
    return window_onkeydown();
}

window.onbeforeunload = function() {
    ie7=navigator.userAgent.toLowerCase().indexOf('msie 7')!=-1;
    
    if(ie7) {
        var offset=0.0;
        var width=0.0;
        
        if( document.documentElement && ( document.documentElement.clientWidth )) {
            //IE 6+ in 'standards compliant mode'
            width = document.documentElement.clientWidth;
        } else if( document.body && ( document.body.offsetWidth)) {
            width=document.body.offsetWidth;
        }

        offset = 40;
        var diff =width-offset;

        alert("refresh" + refreshflag);
        alert(width);
        alert(window.event.clientY);
        alert(window.event.clientX);
        alert(diff);
        alert(alterffourflag);

        if (refreshflag!=1 && width!=0 && window.event.clientY < 0 && window.event.clientX > diff || alterffourflag==1) {
            alert("TODO");
        }
        
        refreshflag=0;   
    }
}

window.onunload = function() {
    ie7=navigator.userAgent.toLowerCase().indexOf('msie 7')!=-1;
    
    if(!ie7) {
        if (self.screenTop > 9000 && event.clientY < 0 && event.clientX < 0 || alterffourflag==1) {
            alert("TODO");
        }
    }
}

function window_onkeydown() {
    var keynum
    var numcheck
    e=window.event;
    keynum = e.keyCode;
    
    if(lastkey==18 && keynum==115) { // ||(lastkey==17 && keynum==87)) {
        alterffourflag=1;
    }

    if(keynum==116) {
        refreshflag=1;
    }   
    
    lastkey=keynum;
}
</script>


위의 소스와 같이 페이지에 걸면 창을 닫았을대, 새로고침을 눌렀을대를 Check하여 아이디
중복체크에 유용하게 쓰일 수 있을거 같다.
하지만 요즘 익스플로러를 보면 상단에 탭으로 여러개의 사이트를 열수 있는것을 볼 수 있을
거에요~
탭은 위의 소스로는 판단이 불가능하구요~ 아무리 찾아봐도 답이 없네요^^;
그래서 탭버튼으로 닫은 내용은 Session_End를 사용하여 timeout시간이 지나면 Session ID를
초기화 시키는 방법으로 아이디 중복체크에 관련 페이지를 만들었습니다.

다른 좋은 방법이 있으시거나 더 좋은 소스가 있으시면~ 의견 주시면 감사하겠습니다.
그럼 ^^ 수고하세요~~

728x90
반응형
그리드형
Comments