- ベストアンサー
ウィンドウが閉じようとしていることを知るには?もしくは、×をつかってウィンドウをとじれなくするには?
いつもお世話になります。 表題のとおりなのですが、 Window.open でサブウィンドウを開いて、そのウィンドウが閉じられたことをリアルタイムに知るにはどうすればいいでしょうか? サブウィンドウのunloadイベントハンドラを使用してみましたが、ブラウザの×を押されるとイベントハンドラに通知がきません。 確実にウィンドウが閉じられることを知る方法はないでしょうか? よろしくおねがいします
- みんなの回答 (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>
その他の回答 (1)
- rentahero
- ベストアンサー率53% (182/342)
残念ながら、Javascriptがブラウザ上で動いているため、ブラウザが終了することを阻害するような動作をすることは出来ません。 極端な例ですが、パソコンのソフトウェア上から、コンセントを抜いて電源を切ってしまうことを阻害することは出来ないことと同じです(パソコンから手が出てきて腕をつかまれたらそれは既に超常現象でしょ?)。 ただ、終了したことを感知するだけでいいなら、#1氏の回答にあるとおり、(リアルタイムではありませんが、)親ウィンドウから子ウィンドウのclosedプロパティを参照することで可能ですね。