ことの起こり
Webの画面では、新規入力をしようとすると、別ウィンドウ=子ウィンドウが開いて入力し、登録ボタンを押すと、子ウィンドウが閉じる仕組みがある。
子ウィンドウが閉じるだけなら問題ないが、一覧表があって、子ウィンドウが閉じたら、登録された内容を反映したいときがある。
子ウィンドウが閉じるときに、JavaScriptで
window.opener.location.reload();
window.close();
とすれば、 親ウィンドウは再読込みされて、子ウィンドウは閉じられる。
これで問題なければいいが、今回は親ウィンドウ側に検索機能があって、POSTパラメータで処理をしていた。
そのため、同じことをすると、再読み込みの警告が表示されて、いちいちメッセージのOKをクリックしなくてはならなかった。
GETパラメータで処理していれば、発生しない現象なんだけど。
対処方法
対処の仕方は簡単で、子ウィンドウから親ウィンドウの検索のformをsubmitすれば、警告は表示されないで、検索が行われる。
window.opener.$("#search").submit();
window.close();
とすれば子ウィンドウから親ウィンドウのformをsubmitできる。
jQueryを使う書き方で書いたが、getElementById()でも大丈夫なはずだ。
こういった内容は、自分のネタ帳に入れておくと、忘れたときに役に立つ。