質問: Firefoxアドオンを開発しています。 開発しているアドオンは、javascriptでポップアップウィンドウ(以下、子ウィンドウ)を開くものなのですが、子ウィンドウを開きっぱなしの状態で親ウィンドウを閉じた時に子ウィンドウが残ってしまいます。 さらにその状態で子ウィンドウを閉じても、その後にFirefoxを起動した時に、閉じたはずの子ウィンドウも再び一緒に呼び出されてしまいます。 Firefox終了時に子ウィンドウを一緒に閉じる方法、またはFirefoxの親ウィンドウの終了を感知する方法が分かる方はいらっしゃいますでしょうか?
回答: こんにちは。 子ウィンドウをwindow.openするときにオブジェクトとして変数に入れてやり、 親ウィンドウを閉じる時に実行されるonunloadイベントで子ウィンドウをcloseしてあげればいいと思います。 閉じるときに、子ウィンドウがあるかどうかの判定もしたほうがいいです。 ``` //子ウィンドウオブジェクト var subwin; //子ウィンドウを開く function openSub(){ subwin = window.open(親ウィンドウ名, 子ウィンドウ名); } //親ウィンドウを閉じるときに子ウィンドウも閉じる window.onunload = function() { //子ウィンドウの存在確認 if( subwin && (!subwin .closed) ){ subwin .close(); } } ``` 参考:JavaScriptでウインドウを閉じる