• ベストアンサー

子ウィンドウの「閉じる(×)」で親ウィンドウも一緒に閉じる方法

タイトル通り、親ウィンドウと、子ウィンドウがあり、子ウィンドウの「×」でウィンドウを閉じた場合に、親ウィンドウも閉じることはできるのでしょうか。 JavaScriptで「閉じる」ボタンをつけて行うことは、可能なのですが、ウィンドウの「×」はどのように処理したらよいのかわかりません。 ご存知の方がいましたら、よろしくお願いしたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.1

子ウィンドウに親ウィンドウ側から別のページを読み出したり、あるいは子ウィンドウ内でページを移動・更新したりすることがないのであれば、window.onunloadのイベントを拾って親ウィンドウを閉じる処理を入れておくのが良いのではないかと思います。 window.onunloadは、現在表示されているページが、ページ移動・更新・ウィンドウを閉じる動作などで破棄された時を拾いますので、子ウィンドウを閉じた時に親ウィンドウを閉じるようにもできると思います。 その場合は、子ウィンドウ側のソースに、以下のソースを追加すれば実現できます。 <script type="text/javascript"><!-- function parentclose(){ if (opener){ opener.close(); } } window.onunload=parentclose; //--> </script> ただし、先にも書いたように、子ウィンドウを再利用して別のページを読み出したり、あるいは子ウィンドウ内のコンテンツで更新・別ページへの移動ができる場合は、それらの動作を実行された時にも、その現在表示されているページが破棄されたことを検知して親ウィンドウを閉じようとします。 そういった動作を含むサイト設計をしている場合には、この方法は使えないでしょう。 また、親ウィンドウとなるウィンドウがスクリプトなどで開かれたウィンドウではない場合(ユーザーが任意で開いたウィンドウの場合)、IEではそのウィンドウをスクリプトから閉じようとしていることの警告ダイアログが出ますし、Netscape7ではその動作自体をセキュリティエラーとして実行しないようになっています。 状況によっては、実装しても思い通りの動作にならない可能性もあるかもしれません。 参考になれば幸いです。

ironika
質問者

補足

ご回答ありがとうございます。 ご回答の中にもございますが、親ウィンドウが閉じられるときに、警告が出てしまいますが、これをなくすことは、可能でしょうか。 もし、ご存知でしたら教えていただけないでしょうか。

その他の回答 (1)

noname#199778
noname#199778
回答No.2

補足読みました。 親ウィンドウを閉じる時に出る警告についてですが、これは閲覧者が任意で開いているウィンドウを閉じようとしている限りは避けられない動作になると思います。 これは、スクリプトの動作により、ユーザの意思に反してブラウザが終了してしまうことを回避するために用意されている機能でしょうし、ブラウザの仕様がそうなっている以上、いかんともしがたいと思われます。 ただ、スクリプトやa要素のtarget指定で開いたウィンドウに関しては、警告を出さずにスクリプトから閉じることができます。 ですので、親ウィンドウを別のページから開く時に、あらかじめ別ウィンドウに開いておくようにすれば、一応警告を出さずに親ウィンドウを閉じることができます。 もし可能でしたら、その親ウィンドウになるページを、そのページを読み出す時に別ウィンドウで開くようにサイトを設計しておくことも、一つの解決策になると思います。 その他の策としては、ちょっと思いつきません… もし上記の方法では目的に適わないという場合は、ごめんなさい。

関連するQ&A