Dev's/Web

[Dev's] 중복 팝업 방지 - 새창/새탭 생성 시, "Scripts may close only the windows that were opened by them." 해결

rookas89 2022. 9. 30. 12:14
728x90

스크립트를 사용하여 자동으로 창이나 탭을 닫으려고 할 때

Scripts may close only the windows that were opened by them.

요런 에러가 발생하는 경우가 있다.

중복창이 생성되는걸 어떻게든 막아야하는 상황에서 close가 안먹혀서 다소 곤란해는데

아래 소스코드를 사용하여 구현했다.

 

	window.onload=function(){
		if (localStorage.getItem('check_windows')==1) {
			if (confirm("이미 생성 된 화면이 있습니다.")) {
		        // 취소(아니오) 버튼 클릭 시 이벤트
				closeOverlap();
		    } else {
		        // 확인(예) 버튼 클릭 시 이벤트
		        closeOverlap();
		    }
		} else {
			localStorage.setItem("check_windows",1);
		}
	}
	window.onbeforeunload=function(){
		//정상적으로 종료 시, set value 0
		localStorage.setItem("check_windows",0);
	}
	var closeOverlap = function() {
		//비정상적으로 종료 시, set value 1
		var userAgent = navigator.userAgent;
		if (userAgent.indexOf("Firefox") != -1
				|| userAgent.indexOf("Chrome") != -1) {
			window.location.href = "about:blank";
		} else {
			window.opener = null;
			window.open("", "_self");
			window.close();
		}
		localStorage.setItem("check_windows",1);
	}
728x90