'전체 글'에 해당되는 글 42건

  1. 2020.10.28 부모창(opener)으로 submit 할때
728x90

window.open 으로 열린 popup창에서 부모창으로 정보를 갱신할때 부모창을 타겟으로잡아 submit 해준다.

 

[팝업 오픈시]

function winOpen() {

   document.domain = "myDomain.com"; // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

   window.open("popup.htm", "myPopup", "width=800, height=600, resizable=no, scrollbars=no") ;

}

 

 

[부모창 제어시]

function openSubmit() {

    document.domain = "myDomain.com";  // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

    opener.name = "myOpner";

    document.myForm.target = opener.name;

    document.myForm.action = "/what/goWhat.do";

    document.myForm.submit();

    self.close();   //window.close(); 를 사용해도 된다.

}

 

 

 

 

 

 

도메인을 일치시켜야 하는 이유는 크로스 도메인 오류가 발생하는 경우가 있어서인데 다른 도메인의 창을 제어하려할 경우 에러가 발생함을 막기 위하여 브라우저에서 차단하는 경우때문이다.

 

브라우저에서 크로스도메인을 허용하지 않는 이유는 소유하지 않은 페이지에 대한 권한을 주지 않기 위해서이다.

예를 들어 팝업으로 구글이나 네이버창을 열고 오프너가 팝업창에 권한을 행사하여 변경처리 하거나 반대로 팝업에서 오프너에 대한 권한을 행사할수 있게 될 경우 보안문제가 발생한다.

게시판등에 팝업이 뜨도록 작성하고(요즘은 허용되지 않는 경우가 대부분) 그 팝업창에서 오프너를 제어할 수 있는 경우가 예전에 있었고 이에 대한 패치로 크로스 도메인에 대한 패치가 브라우저에 적용되어 있다.

(같은 도메인에서 팝업하고 처리 하는 경우 도메인지정은 생략해도 에러가 안나는 경우가 대부분이다.)

 

간혹 self.close() 또는 window.close() 처리시 submit 처리가 완료되지 않은 상황에서 close()처리가 발생되어 오프너가 정상적으로 동작하지 않는 경우도 있다.

이 경우 close 동작전 timeout 을 0.5초 정도 지정해주거 콜백 처리를 하는 경우가 있다.

 

 

728x90

'프로그래밍 > Jquery, javascript' 카테고리의 다른 글

alert()와 console.log() 활용  (4) 2020.12.14
Posted by 내맘대로내뜻대로