본문 바로가기
IT/JAVA

자바스크립트 opener 함수의 호출 오류 해결 방법

by rimilove 2024. 8. 23.
반응형

크롬이나 익스(엣지)등 버전등에서 팝업창에서 부모창의 함수를 호출할때  소스가 실행이 되지 않는 오류에 대해서 알아보려고 합니다. 

 

해당경우 브라우저 문제 같기는 한데, 개발자 도구를 작동 시키면 또 소스가 제대로 동작하는 현상이였습니다.

 

다행이 구글링 끝에 해결 방법을 찾아냈습니다. 

 

 

<문제 소스> 

 

팝업창 

<script>
   function testa(){


      opener.doCancle();   //부모창 함수 호출 

  } 
</script>

 

부모창 

<script>
   function  doCancle(){
      if(comfirm("테스트 하시겠습니까?"){
              //실행 로직 

     }
 }
</script>

 

 

위와 같은 소스 를 사용할 경우 소스 실행이 되지 않고 브라우저 consol 창에 아래  메세지가 표시되었습니다.

 

오류 메세지

 

 

알고 보니, 부모창에서 confirm() 을 사용할 경우 발생하는 문제로 확인 되었습니다. 

그래서 결국 해결책은 confrim 창을 팝업창으로 옮긴 후 호출 하니  문제가 해결 되었습니다. 

 

 

<해결 소스> 

 

팝업창 

<script>
   function testa(){

  if(comfirm("테스트 하시겠습니까?"){

                opener.doCancle();   //부모창 함수 호출 

     }
    

  } 
</script>

 

부모창 

<script>
   function  doCancle(){

        //실행로직 
 }
</script>

 

개발 하시다가 위와 같은 오류가 나오면 참고 하시면 좋을 것  같습니다. 

 

반응형