El problema
En ocasiones necesitamos crear una o varias ventanas hijas desde la ventana principal de nuestra página, y sería estupendo que al cerrar la ventana madre, o abandonar la página mostrada en ella, también se cerraran las ventanas hijas. Por ejemplo puedo tener una ventana principal con un enlace que se abre en una ventana hija en la que se muestran avisos o mensajes y quiero que al cerrar la ventana madre o abandonar la página actual las ventana hija se cierre para ahorrarle al visitante el tener que cerrarla a mano.

La solución
La solución es muy fácil: se trata de hacer uso del evento onunload, un evento que se dispara cuando cambia el contenido de la ventana del explorador, es decir, cuando el usuario abandona la página que está viendo. Pero este evento también se dispara cuando el usuario cierra la ventana del explorador. Basta con vincularle una función que cierre las ventanas que anteriormente se abrieron usando el método window.open

Un caso práctico

Un ejemplo sencillo que muestra como poner en práctica esta solución sería el que se muestra aquí abajo:

var ventanaHija = null;
function crearHija( )
{
ventanaHija = winfow.Open("avisos.htm", "ventana_hija");
}

function cerrarHija( )
{
if (ventanaHija)
     ventanaHija.close( )
}

En la página colocamos el evento vinculado:

<body onunload="cerrarHija( )">

La variable ventanaHija sería el objeto window devuelto por window.open( ) cuando se creó la ventana hija. Se supone que en esta página existirá algún enlace, botón o evento que llamará a la función crearHija( )