メモ
最初は、submit したら消えてなくなると思ってました。
parent.html
<script language="JavaScript"> function modal(){ var x = [0, 1, 2]; window.showModalDialog( './child.html', x, "dialogWidth=200px; dialogHeight=120px;" ); alert(x); } </script> <input type="button" value="モーダル" onClick="modal()">child.html
<script language="JavaScript"> function modal_end(){ alert(window.dialogArguments); var ary = window.dialogArguments; ary[1] = 5; alert(window.dialogArguments); window.close(); } window.name = "child" </script> <input type="button" value="終了" onClick="modal_end()"> <form target="child"> <input type="submit" value="クリック"> </form>
上記のような、parent.html と child.html があって parent.html から showModalDialog にて child.html を開きます。
child.html では、window.dialogArguments で 親から渡されたパラメータを参照出来るみたいです。なので、child.html 側で値を変更したら parent.html でも変更されています。(同じ参照だから?)
で、この時 child.html 側で submit しても同じ参照のままなのか疑問に思い試してみた。
showModalDialog で呼び出した Window から Submit した際に、新しい Window を立ち上げない方法 - お だ のスペース で書いてある方法で、
submit しても新しい Window が立ち上がらない様にすると child.html 側で変更が parent.html にも反映されていた。(同じ参照のまま?)
これ最初は出来ないと思ってました。でも試したら出来たのでよくよく考えてみると dialogArguments って window が持ってるから同じ window なら submit しても関係無いのかなと納得。
ちなみに、child.html の submit で新しい Window を立ち上げた場合は、新しく立ち上げた Window には dialogArguments は存在しませんでした。
パラメータを渡していないからなんでしょうかね。(そもそも Modal じゃ無くなってるし)