javascript / popup / 팝업 / 중복으로 열릴때 / 팝업 포커스 / 팝업 체크 / window.open

2016.01.05 11:58language/javascript


javascript에서 팝업버튼을 누르면 계속 팝업이 호출되는 것을 방지하는 예제이다.

 

 

 

javascript 에서 window.open 으로 팝업을 열 때 팝업 호출 이벤트를 계속 실행하면

 

중복해서 계속 팝업이 뜬다.

 

그 현상을 방지하기 위한 방법이다.

 

완벽하진 않지만 임시로 쓰기엔 나쁘지 않은것 같다.

 

페이지가 새로고침 되거나 하면 현재 예제로는 답이 없으니 그 상황에 대처는 각자에게 맞긴다.

 

 

하나의 팝업 이벤트

var winRef;
 
function popupAction(){
    if(winRef == null){
        winRef = window.open('url''popupName''width=1300,height=400');
    }else{
        if (winRef.closed == false) {
            winRef.focus();
        }else{
            winRef = window.open('url''popupName''width=1300,height=400');
        }
    }
}
 
cs

 



여러개의 팝업 이벤트가 있을때

var winRef;
    var popupFlag = '';
    function skillPopup(no) {
        var url = '';
        if (popupFlag == no) {
            if (winRef == null) {
                winRef = window
                        .open(
                                url,
                                'skillPopup',
                                'width=1300,height=400,toolbar=no,menubar=no,location=no,scrollbars=yes,status=no,pageXOffset=0,pageYOffset=0,resizable=yes');
            } else {
                if (winRef.closed == false) {
                    winRef.focus();
                } else {
                    winRef = window
                            .open(
                                    url,
                                    'skillPopup',
                                    'width=1300,height=400,toolbar=no,menubar=no,location=no,scrollbars=yes,status=no,pageXOffset=0,pageYOffset=0,resizable=yes');
                }
            }
        } else {
            popupFlag = no;
            if (winRef != null) {
                winRef.close();
            }
            winRef = window
                    .open(
                            url,
                            'skillPopup',
                            'width=1300,height=400,toolbar=no,menubar=no,location=no,scrollbars=yes,status=no,pageXOffset=0,pageYOffset=0,resizable=yes');
        }
 
    }
cs

 

 

 

도움이 되셨다면 공감을 부탁드립니다. ^^