親ウインドウの操作方法

新しく作成されたウインドウが作成元の把握が出来るかの調査

page1.htm

<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT language="JavaScript">
<!--
function OK(){
  document.frm.cid.value = document.frm.gid.value;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
別ウインドウ動作確認<BR>
<FORM name="frm" action="http://localhost/cgi-bin/printenv.pl">
<INPUT size="20" type="text" name="name" value="aaa"><BR>
<INPUT type="text" name="cid" value="200"><BR>
<INPUT type="text" name="gid" value="bbb"><BR>
<INPUT type="button" value="別ウインドウ" onclick="window.open('page2.htm', '_blank');">
<INPUT type="button" value="OK"  onclick="OK();">
</FORM>
</BODY>
</HTML>

page2.htm

<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT language="JavaScript">
<!--
function OK(){
  window.opener.document.frm.cid.value = document.frm.gid.value;
  window.opener.document.frm.submit();
  window.close();
}
//-->
</SCRIPT>
</HEAD>
<BODY>
呼ばれ側<BR>
<FORM name="frm"><INPUT size="20" type="text" name="gid" value="100"><BR>
<INPUT type="button" value="OK"  onclick="OK();">
</FORM>
<a href="page2.htm">ページ遷移</a>
</BODY>
</HTML>

結果として

  • JavaScript*1で開かれたウインドウ(page2.htm)はopenerプロパティから親ウインドウを取得できる
  • 開かれたウインドウはそこから更に画面遷移しても親子関係は継続
  • 自ウインドウと同様に親のウインドウの内容を操作することが可能

同一ドメイン内でない場合どうなのか等まだまだ調べることはありますが
一応分かった事としてここまで記録。

*1:window.open()メソッド