dポイントプレゼントキャンペーン実施中!

いつもお世話になります。

表題のとおりなのですが、

Window.open
でサブウィンドウを開いて、そのウィンドウが閉じられたことをリアルタイムに知るにはどうすればいいでしょうか?

サブウィンドウのunloadイベントハンドラを使用してみましたが、ブラウザの×を押されるとイベントハンドラに通知がきません。

確実にウィンドウが閉じられることを知る方法はないでしょうか?

よろしくおねがいします

A 回答 (2件)

これが最善の策かはわかりませんが、元のウィンドウ内で定期的にサブウィンドウの状態をチェックしにいけば(多少のタイムイラグはあるが)確実に終了されたことをチェックできます。



<html>
<script>
var w;
function onClick()
{
w = window.open( "http://www.goo.ne.jp/", "_blank", "width=200,height=200" );
setTimeout( "checkSubwin()", 500 );
}
function checkSubwin()
{
if( w.closed ){
alert( "サブウィンドウ終了" );
} else {
setTimeout( "checkSubwin()", 100 );
}
}
</script>
<body bgcolor="#FFFFFF" >
<input type="button" value="open" onClick="onClick();" style="background-color: #FFFFFF;border-color: #FFFFFF;border-style:solid;cursor:pointer;" >
</body>
</html>
    • good
    • 0

残念ながら、Javascriptがブラウザ上で動いているため、ブラウザが終了することを阻害するような動作をすることは出来ません。



極端な例ですが、パソコンのソフトウェア上から、コンセントを抜いて電源を切ってしまうことを阻害することは出来ないことと同じです(パソコンから手が出てきて腕をつかまれたらそれは既に超常現象でしょ?)。

ただ、終了したことを感知するだけでいいなら、#1氏の回答にあるとおり、(リアルタイムではありませんが、)親ウィンドウから子ウィンドウのclosedプロパティを参照することで可能ですね。
    • good
    • 0

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