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