popup창의 depth가 3단계이고, 최상단의(프레림에 상관없이)페이지에
login.jsp를 출력하는 경우
if (needToLogin) {
out.println(
"<script language='javascript'>" +
"if(parent.opener == null || parent.opener == 'undefined') {"+
//" alert('parent.opener설정안됨');"+
// popup창이 현재 하나도 없으므로 현재 화면에 login.jsp페이지 출력
" parent.top.location.href='/login.jsp?goPage=" +goPage+"';"+
"} else if(parent.opener != null && parent.opener != 'undefined') {"+
//" alert('parent.opener설정됨');"+
// opener가 있는 경우만 내부의 opener를 체크해야 에러발생하지 않음
// popup창이 1개 확인 됬으므로 내부의 2번째 창이 있는지 확인
" if(parent.opener.opener == null || parent.opener.opener == 'undefined') {"+
// " alert('parent.opener.opener설정안됨');"+
// popup창이 현재 1개 이므로 opener화면에 login.jsp페이지 출력
" parent.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" window.top.close(); " +
// 현재창 닫기
" } else if(parent.opener.opener != null && parent.opener.opener != 'undefined'){"+
//" alert('parent.opener.opener설정됨');"+
// opener.opener가 있는 경우만 내부의 opener를 체크해야 에러발생하지 않음
// popup창이 2개 확인 됬으므로 내부의 3번째 창이 있는지 확인
" if(parent.opener.opener.opener == null || parent.opener.opener.opener == 'undefined') {"+
//" alert('parent.opener.opener.opener설정안됨');"+
// popup창이 현재 2개 이므로 opener.opener화면에 login.jsp페이지 출력
" parent.opener.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" parent.opener.close(); " + // 부모창닫기(1단계)
" window.top.close(); " + // 현재창 닫기
" } else if(parent.opener.opener.opener != null && parent.opener.opener.opener != 'undefined') {"+
//" alert('parent.opener.opener.opener설정됨');"+
// popup창이 현재 3개 이므로 opener.opener.opener화면에 login.jsp페이지 출력
" parent.opener.opener.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" parent.opener.opener.close(); " + // 부모창닫기(2단계)
" parent.opener.close(); " + // 부모창닫기(1단계)
" window.top.close(); " + // 현재창 닫기
" }"+
" }"+
"}"+
"</script>");
} else {
// 통과
}
login.jsp를 출력하는 경우
if (needToLogin) {
out.println(
"<script language='javascript'>" +
"if(parent.opener == null || parent.opener == 'undefined') {"+
//" alert('parent.opener설정안됨');"+
// popup창이 현재 하나도 없으므로 현재 화면에 login.jsp페이지 출력
" parent.top.location.href='/login.jsp?goPage=" +goPage+"';"+
"} else if(parent.opener != null && parent.opener != 'undefined') {"+
//" alert('parent.opener설정됨');"+
// opener가 있는 경우만 내부의 opener를 체크해야 에러발생하지 않음
// popup창이 1개 확인 됬으므로 내부의 2번째 창이 있는지 확인
" if(parent.opener.opener == null || parent.opener.opener == 'undefined') {"+
// " alert('parent.opener.opener설정안됨');"+
// popup창이 현재 1개 이므로 opener화면에 login.jsp페이지 출력
" parent.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" window.top.close(); " +
// 현재창 닫기
" } else if(parent.opener.opener != null && parent.opener.opener != 'undefined'){"+
//" alert('parent.opener.opener설정됨');"+
// opener.opener가 있는 경우만 내부의 opener를 체크해야 에러발생하지 않음
// popup창이 2개 확인 됬으므로 내부의 3번째 창이 있는지 확인
" if(parent.opener.opener.opener == null || parent.opener.opener.opener == 'undefined') {"+
//" alert('parent.opener.opener.opener설정안됨');"+
// popup창이 현재 2개 이므로 opener.opener화면에 login.jsp페이지 출력
" parent.opener.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" parent.opener.close(); " + // 부모창닫기(1단계)
" window.top.close(); " + // 현재창 닫기
" } else if(parent.opener.opener.opener != null && parent.opener.opener.opener != 'undefined') {"+
//" alert('parent.opener.opener.opener설정됨');"+
// popup창이 현재 3개 이므로 opener.opener.opener화면에 login.jsp페이지 출력
" parent.opener.opener.opener.top.location.href='/login.jsp?goPage=" +goPage+"';"+
" parent.opener.opener.close(); " + // 부모창닫기(2단계)
" parent.opener.close(); " + // 부모창닫기(1단계)
" window.top.close(); " + // 현재창 닫기
" }"+
" }"+
"}"+
"</script>");
} else {
// 통과
}