popup에서 opener로 post 전송

2008. 12. 12. 10:49모두모두 개발자다요/javascript

이럴때...:
특정한 프레임 구조를 가지지 않는 보통 html 또는 jsp 페이지에서 팝업창을 띄우고,

팝업 안의 링크를 클릭할 때 opener 창으로 submit 할 경우..

예를 들면 여러 홈피에서 이벤트 알리미 하듯이 첫 페이지에서 이벤트 소개하는 팝업 띠워주고
"이벤트하러 가기" 뭐 이딴거 클릭하면 이벤뚜 상세 내용 게시물을 메인창에 보여주는 등등...

찾다가...:
1. 뭐 어떻게든 메인 창의 타겟 이름만 알면 될텐데 말이지..
   - 음 그럴듯한데..? 좀 연구해보겠어.

2. main.html에다 function을 정의하고 팝업에서 걔를 콜한다??
   opener.gogogo();
   - 이것도 그럴 듯한데..
   - 근데 팝업창이 살아있는 상태에서 메인창이 다른 페이지로 이동된 후 다시 팝업창의 링크를 누른다면...??

3. post 해지마!! 그냥 꼬랑지 달구 쏴~~
   opener.location.href="action.jsp?tag=해지마";
   - 그래! 좋은게 좋은거고 편한게 좋은거고 모르는게 약이고 알면다치고...

결국 이렇게해봤지..

main.html


<HTML>
<HEAD>
<TITLE> 메인 </TITLE>
<script type="text/javascript">
window.name = "main";    //억지로 메인창의 이름 값을 줌
function init() {
    window.open('pop.html','pop','left=20, top=20, width=450, height=640, scrollbars=no');
}
</script>
</HEAD>
<BODY onload="init()">
메인이지롱
</BODY>
</HTML>
 

pop.html

 <HTML>
<HEAD>
<TITLE> 팝업 </TITLE>
<script type="text/javascript">
function () gogogo{
    fm.target="main";    //메인창의 이름값으로 타겟!
    fm.submit();
    self.close();
}
</script>
</HEAD>
<BODY>
<p><a href="javascript:gogogo()">무비무비무비!!</a></p>
<form name="fm" method="post" action="action.jsp">
    <input type="hidden" name="tag" value="해지마">
</form>
</BODY>
</HTML>


해보고 나서...
사실 1번처럼 메인창의 이름을 줘버린것이지만.. 이 방법도 2번과 같은 문제가 있을 수 있지(두번째 이유)..
1,2번처럼 하겠다~하면.. function이든 메인창 이름이든 간에 그것들을 홈피 화면 페이지마다 공통으로 들구 댕기게 하면 뭐 나름 크리티컬한 문제는 없다고 생각하는데..???