IE window.opener null or undefined 처리하기

HYE-ON·2020년 3월 6일
2
post-thumbnail

window.opener가 null이나 undefined, 혹은 사용 권한이 없을 때

window.open으로 열린 children window 에서 redirect가 일어나 도메인이 다른 링크로 이동하거나 프로토콜(HTTP, HTTPS)이 다른 경우 window.openernull 혹은 undefined이거나 IE 콘솔에서 사용 권한이 없습니다 라는 에러가 찍힐 때가 있습니다.

우선 해결 방법부터 알아봅시다!


if(!window.opener){
  window.opener = window.open('', parents window의 window.name);
}else{
  window.opener = window.opener;
}

🤔 왜 이렇게 한 번 더 window.open()을 해줘야하나요?

➡️ redirect가 일어나며 parents window의 window.opener를 잃어버리니 window.opener가 존재하지 않을 시 window.open으로 parents window를 한 번 열어줌으로써 window.opener 객체를 받아옵니다.

혹시 children window에 있는 값을 parent window로 전달해야한다면? 이 포스트를 참고하세요 :)

profile
우주에 가고 싶은 프로그래머

1개의 댓글

comment-user-thumbnail
2020년 6월 17일

감사합니다 ㅠㅠㅠ 덕분에 해결했습니다.
크롬의 경우도 되고
제 pc IE11 에서도 되는데
유독 다른분 pc에서만 ie에서 안되서 포스팅 해주신 방법으로 해결했습니다.
감사합니다!!

답글 달기