Bueno, no lo acostumbro, pero no se como explicarlo, entonces te paso el codigo que alguna vez desarrolle porque tambien tuve el mismo problema y lo tuve que investigar a fondo:
Código HTML:
<script type="text/javascript">
/* Ejemplo: */
// [ URL ],[ Nombre ]
/*
w1 = window.open("http://liga","winX","");
w2 = window.open("","winX","");
*/
//Lo que hace aquí es que, primero abre la ventana, después hace un open a la ventana con w2, pero sin pasar nada
//en el campo de URL, entonces, lo que pasa es que obtenemos un apuntador hacia la ventana, con el cual podemos
//manipular la ventana en caso de que exista.
/* Lo que necesitamos */
//1. Abrir una ventana tipo w2, asegurandonos que no afecta las propiedades de la ventana.
wx = window.open("","winX","");
//2. Verificar que la ventana este abierta. Esto lo haremos chacando una variable de inicialización que contenga la
// pagina que estamos abriendo.
if (!(isNaN(wx.Activa)))
{
alert('La ventana ya esta abierta, entonces haremos solamente un Focus.');
//2.1 Hacer un focus solamente, porque la ventana estaba abierta antes.
wx.focus();
}
else
{
alert('La ventana no se habia abierto antes, entonces debemos abrir una nueva.');
//2.2 Abrir la ventana porque la ventana no estaba abierta antes.
wx = window.open("liga","winX","");
wx.focus();
}
</script>
Si te fijas, ahi verifico una variable que debe de existir creada en la pagina que estas abriendo, algo como:
paginaEnelPopuP.htm
<script>
var Activa = 1
</script>
Cuando en el PopUp realmente existe la pagina abierta esa variable existe, y cuando no, esa variable no va a existir entonces sabes facilmente si estaba abierta o cerrada.
Bueno, espero que te sirva, ese es el metodo que utilizo para esa deteccion, te escribi solo mi borrador, pero ya con eso puedes hacer lo que necesites.
Suerte!!