親ウィンドウが閉じられたらサブウィンドウも閉じる


動作ブラウザ 【 IE:3.0  NN:2.0
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows - - × -
Macintosh - - -
UNIX - - - - - - - -
Dreamcast - - - - - - - - - - × × -

ポイント subWin = window.open("sub.html","sub","width=320,height=240"); <body onUnload="subWin.close()">
説  明 親ウィンドウが閉じられたらサブウィンドウも閉じるようにするには2つの方法があります。1つはサブウィンドウ側でsetTimeout()かsetInterval()を使って定期的に親ウィンドウが閉じられているかどうか調べ閉じられていたら自分自身も閉じるようにします。もう1つはウィンドウを閉じる時にもonUnloadイベントが発生するので、bodyタグ内に「onUnload="サブウィンドウ名.close()"」と記述する方法です。サンプルでは後者の方法を使っています。この方法ではページを切り替えた時もサブウィンドウが閉じられてしまいます。
サンプル <html> <head> <title>親ウィンドウが閉じられたらサブウィンドウも閉じる</title> <script Language="JavaScript"><!-- subWin = window.open("sub.html","sub","width=320,height=240"); // --></script> </head> <body onUnload="subWin.close()"> 親ウィンドウが閉じられたらサブウィンドウも閉じる </body> </html>
補足説明 サブウィンドウ側でsetTimeout()、setInterval()を使って監視する場合は、親ウィンドウが閉じられているかどうかを調べる部分でエラーが発生する場合があり、全てのブラウザで安定して動作しません。ちなみに以下のようにサブウィンドウ側で監視処理をします。window.opener.documentの部分はwindow.opener.closedでも構いません。 <html> <head> <title>親ウィンドウが閉じられたらサブウィンドウも閉じる(2)</title> <script Language="JavaScript"><!-- function check() { if (!window.opener.document) self.close(); setTimeout('check()',1000); status = window.opener; } // --></script> </head> <body onLoad="setTimeout('check()',1000)"> サブウィンドウです。 </body> </html>

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA