プロが教えるわが家の防犯対策術!

親ウィンドウから複数のサブウィンドウを開いたとします。親ウィンドウを閉じる際に、開いているサブウィンドウを全て閉じたいと思っています。

開いたサブウィンドウのwindowオブジェクトを控えておいて、親ウィンドウのunloadで順番に閉じていけばできますが、イマイチかっこいい処理ではないので、一括してcloseできる処理を考えているところです。

なにかいい方法はないでしょうか?

A 回答 (2件)

親ウィンドウが開いた子ウィンドウを一括で閉じるには、


子ウィンドウの一覧を把握していなくてはなりません。

ですが、いちいち子ウィンドウの変数を作成していくのは
面倒極まりないので、以下の手順で一括処理を行えます。

0)グローバル変数で、配列を宣言する

******ここは複数回の可能性あり*******
1)子ウィンドウを開く
2)子ウィンドウハンドルを配列に入れる
***********************************

onUnload時
1)子ウィンドウハンドルを参照し、閉じられていないかチェック
2)子ウィンドウハンドルに対して close()メソッドを実行


一応、IE5上で動作確認したソースもあるのですが、
ご自分でお考えになる方が力になりますので。
どうしてもできないと言う時は、改めてソースを開示いたしましょう。
    • good
    • 0
この回答へのお礼

現状、ご回答の内容とほとんど同じ処理を実装しています。ひょっとしてopenerは、自身から開いたウィンドウを把握してるのかと思って質問したしだいですが、把握していないってことがわかっただけで一歩前進です。ありがとうございました。

お礼日時:2003/04/10 10:22

ひとまず以下のソースで出来ます。


しかしかっこいい処理とは言えません。

<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>
    • good
    • 0
この回答へのお礼

No.1の回答の実装例ですね。ありがとうございます。

お礼日時:2003/04/10 10:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています