友達が困ってるので書いた。

ポップアップでウィンドウを開く時、二重でオープンしたり、開いてるウィンドウを間違えてリフレッシュしたりしないためにはどうするかということだと思う。

要するに普通にwindow.openで開けばいいのだが、このメソッドの返り値は開いた先のwindowなので、変数に閉じ込めればよい。そうすれば「closed」というプロパティで開いてるか閉じてるかが検出可能。

1
2
3
4
5
6
var myWin = window.open('http://blog.udzura.jp', 'mywindow1');
alert(myWin.closed);
//=> false
//開いたウィンドウを閉じれば
alert(myWin.closed);
//=> true

実際はグローバル変数とか微妙なので、せめてクロージャを使うとスマートだと思う。

やっつけなりに実装してみたソースは以下の如し。サンプルサイトもあるよ。

Read the rest of this entry »