¿Es posible cerrar la ventana padre desde el niño (Javascript)?

Estoy intentando cerrar la ventana padre desde la ventana secundaria usando javascript, pero no va a funcionar.

Por favor comparte código si tienes alguno.

Mi padre html:

 var winr; var selfw; function openAn(){ selfw=self.window; winr=window.open("shell.htm",""); } function justClose(){ //setTimeout("closeAfterMin()",2000); winr.close(); } function closeAfterMin(){ alert("sd"); selfw.close(); }   

New Web Project Page

My Child html:

   function closeAll(){ window.parent.close(); }   
Close Parent and self

Por favor, ayúdame..

Desde window.close () MDN :

Solo se permite llamar a este método para las ventanas que fueron abiertas por una secuencia de comandos utilizando el método window.open. Si un script no abrió la ventana, aparece el siguiente error en la consola de JavaScript: Los scripts no pueden cerrar las ventanas que no fueron abiertas por el script.

Puede cerrar la ventana secundaria del padre, pero no al revés.

 function closeW() { window.open('javascript:window.open("", "_self", ""); window.close();', '_self'); } 

llama a la función anterior con un tiempo de espera desde la página secundaria. Funciona en IE y, a veces también en Chrome.

setTimeout (closeW, 500);

Si se refiere a un marco de referencia dentro de un marco principal, entonces use

 window.parent.close(); 

Si se refiere a una ventana abierta (con window.open ()), intente esto

 window.opener.close(); 

Hay una solución de trabajo (en Chrome, al menos):

Aquí está el código para la página principal:

         

Aquí está el código para la página secundaria:

         

¡Solo inténtalo!

 function closeAll() { window.opener.justClose(); } 

Respuesta actualizada Tener un hijo cerca de un padre es un mal acoplamiento. ¡Mi respuesta original solo funcionó porque mi ventana principal se abrió a través de javascript por una ventana de abuelos!

La forma correcta de hacerlo, para evitar el acoplamiento no necesario, es hacer que la ventana padre encuesta al hijo, utilizando setInterval , para el evento que desencadena el cierre. En este ejemplo, ese evento es el cierre de la ventana hija. De hecho, uso esto para actualizar parte de la página con ajax en lugar de cerrar la ventana, pero el principio es el mismo …

  $('#open_child').click( function(e) { e.preventDefault(); docs_popup = window.open($('#open_child').attr('href'),'upload_doc'); var timer = setInterval(function() { if(docs_popup.closed) { window.close(); } }, 1000); return false; } ); 

Respuesta original En realidad, hay un trabajo bastante simple para esto.

Cree una página que no haga nada más que cerrarla, por ejemplo close.html :

 < !DOCTYPE html>      

This window should close automatically.

Luego, en la ventana secundaria, redirija el abridor a la página que se cierra sola:

 window.opener.location.href='close.html'; 

Es posible que desee probar esto

 window.opener.close()