• ベストアンサー

ウィンドウが閉じようとしていることを知るには?もしくは、×をつかってウィンドウをとじれなくするには?

いつもお世話になります。 表題のとおりなのですが、 Window.open でサブウィンドウを開いて、そのウィンドウが閉じられたことをリアルタイムに知るにはどうすればいいでしょうか? サブウィンドウのunloadイベントハンドラを使用してみましたが、ブラウザの×を押されるとイベントハンドラに通知がきません。 確実にウィンドウが閉じられることを知る方法はないでしょうか? よろしくおねがいします

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

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

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

残念ながら、Javascriptがブラウザ上で動いているため、ブラウザが終了することを阻害するような動作をすることは出来ません。 極端な例ですが、パソコンのソフトウェア上から、コンセントを抜いて電源を切ってしまうことを阻害することは出来ないことと同じです(パソコンから手が出てきて腕をつかまれたらそれは既に超常現象でしょ?)。 ただ、終了したことを感知するだけでいいなら、#1氏の回答にあるとおり、(リアルタイムではありませんが、)親ウィンドウから子ウィンドウのclosedプロパティを参照することで可能ですね。