これを試してみてください:
var win = window.open(url, name);
win.onunload = afterChildClose; // afterChildClose() is the function.
win.close(); // afterChildClose() should fire now.
すべてこのコードは(afterChildClose()を含む)親ウィンドウのJavaScriptに位置し、実行されます。ウィンドウを作成してアンロードイベントに関数を割り当てています。
ああ、ちょうど私が考えたこと。子ウィンドウが更新されたり、別のURLにナビゲートされたりすると、onunloadイベントも発生します。ウィンドウが閉じられたときだけイベントが発生するようにするには、win.closedのafterChildClose()にチェックを入れる必要があります。
EDIT:これを試すためにまとめた2つのサンプルページのコードを示します。
親ウィンドウ:
<html>
<body>
<script type="text/javascript">
var win = window.open("secondwindow.html", "woo");
win.onunload =onun;
function onun() {
if(win.location != "about:blank") // This is so that the function
// doesn't do anything when the
// window is first opened.
{
alert("closed");
}
}
</script>
</body>
</html>
子ウィンドウ( "secondwindow.html"):
<html>
<body>
<script type="text/javascript">
setTimeout('window.close();', 5000);
</script>
</body>
</html>
私はFirefoxで最初の文書を開くしようとすると、それはウィンドウを開き、ウィンドウは5を待ちます最初の文書にalert()が表示されるので、サブウィンドウが閉じても機能しています。
私の答えに関する最新のコメントに応じて、私はウィンドウが閉じたときにその関数を呼び出さない理由を考えることができません。ウィンドウを開いた場所にコードを投稿し、終了時に呼び出す関数を投稿できますか?私はもっとあなたを助けることができるかもしれませんが、今はアイデアがありません。 – Sean