ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

JavaScript:子ウィンドウから親ウィンドウを再読み込みさせる方法

2018/6/29

jQueryを使う方法は動作しないので、訂正して取り消します。

 

会社で知らない人がいたので、教えてあげた。

f:id:AJYA:20120802212712j:plain

photo credit: Dustin Diaz via photo pin cc

 

ことの起こり

Webの画面では、新規入力をしようとすると、別ウィンドウ=子ウィンドウが開いて入力し、登録ボタンを押すと、子ウィンドウが閉じる仕組みがある。

子ウィンドウが閉じるだけなら問題ないが、一覧表があって、子ウィンドウが閉じたら、登録された内容を反映したいときがある。

 

子ウィンドウが閉じるときに、JavaScript

window.opener.location.reload();
window.close();

とすれば、 親ウィンドウは再読込みされて、子ウィンドウは閉じられる。

 

これで問題なければいいが、今回は親ウィンドウ側に検索機能があって、POSTパラメータで処理をしていた。

そのため、同じことをすると、再読み込みの警告が表示されて、いちいちメッセージのOKをクリックしなくてはならなかった。

GETパラメータで処理していれば、発生しない現象なんだけど。

 

対処方法

対処の仕方は簡単で、子ウィンドウから親ウィンドウの検索のformをsubmitすれば、警告は表示されないで、検索が行われる。

JavaScriptは、

window.opener.$("#search").submit();
window.close();
とすれば子ウィンドウから親ウィンドウのformをsubmitできる。
jQueryを使う書き方で書いたが、使わない場合はgetElementById()を使って、
window.opener.document.getElementById("search").submit();
window.close();
とすれば大丈夫なはずだ。
 
 
 こういった内容は、自分のネタ帳に入れておくと、忘れたときに役に立つ。