중복 팝업 방지 - 새창/새탭 생성 시, "Scripts may close only the windows that were opened by them." 해결
스크립트를 사용하여 자동으로 창이나 탭을 닫으려고 할 때
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);
}