- ベストアンサー
親ウィンドウから開いた子ウィンドウをまとめて閉じるには?
親ウィンドウから複数のサブウィンドウを開いたとします。親ウィンドウを閉じる際に、開いているサブウィンドウを全て閉じたいと思っています。 開いたサブウィンドウのwindowオブジェクトを控えておいて、親ウィンドウのunloadで順番に閉じていけばできますが、イマイチかっこいい処理ではないので、一括してcloseできる処理を考えているところです。 なにかいい方法はないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
親ウィンドウが開いた子ウィンドウを一括で閉じるには、 子ウィンドウの一覧を把握していなくてはなりません。 ですが、いちいち子ウィンドウの変数を作成していくのは 面倒極まりないので、以下の手順で一括処理を行えます。 0)グローバル変数で、配列を宣言する ******ここは複数回の可能性あり******* 1)子ウィンドウを開く 2)子ウィンドウハンドルを配列に入れる *********************************** onUnload時 1)子ウィンドウハンドルを参照し、閉じられていないかチェック 2)子ウィンドウハンドルに対して close()メソッドを実行 一応、IE5上で動作確認したソースもあるのですが、 ご自分でお考えになる方が力になりますので。 どうしてもできないと言う時は、改めてソースを開示いたしましょう。
その他の回答 (1)
ひとまず以下のソースで出来ます。 しかしかっこいい処理とは言えません。 <html lang='ja'> <head> <script language='javascript' type='text/javascript'> <!-- var sub_win1; var sub_win2; function winopn() { sub_win1 = window.open('./subwin1.html', 'sub_win1') sub_win2 = window.open('./subwin2.html', 'sub_win2') } function winclose() { sub_win1.close() sub_win2.close(); } --> </script> </head> <body onunload='winclose()'> <center> <DIV style='cursor:hand' onclick='winopn()' ID='iL8'>開く</DIV><BR> </center> </body> </html>
お礼
No.1の回答の実装例ですね。ありがとうございます。
お礼
現状、ご回答の内容とほとんど同じ処理を実装しています。ひょっとしてopenerは、自身から開いたウィンドウを把握してるのかと思って質問したしだいですが、把握していないってことがわかっただけで一歩前進です。ありがとうございました。