Comunidad de diseño web y desarrollo en internet online

¿Cómo cerrar un popup con Javascript?

Citar            
MensajeEscrito el 18 Jun 2013 03:33 pm
Hola a todos, tengo el siguiente problema:
En mi página web tengo lo siguiente:

Código :

<input type="image" id="back" src="images/back.png" onclick="javascript:onBackClick();" style="width:15px; margin-left:15px; cursor:pointer;"/>
<div id="FlashDiv">
   <object id='FLASH'
         classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
         codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0"
         width="99%"
         height="90%">
      <param name="AllowScriptAccess" value="always"/>
      <param name="src" value="swf/mySWF.swf"/>
      <embed name="FLASH"
         pluginspage="http://www.adobe.com/go/getflashplayer"
         src="swf/mySWF.swf"
         width="99%"
         height="90%"
         allowscriptaccess="always"/>
   </object>
</div>
<script type="text/javascript" language="javascript">
function onBackClick() {
   window.close();
}
</script>

Cómo podéis ver tengo un botón que al ser pulsado cierra la ventana (ya que está abierta en un popup), el problema está en que no cierra la ventana, ni da error de javascript ni nada similar.
Pero si quito el FLASH, SÍ cierra el navegador. Alguien sabe a que se debe? Qué puedo hacer?

Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2013 04:15 pm
Los navegadores no permiten que la ventana "se suicide". Es decir, no puedes cerrar por código la propia ventana donde se ejecuta el código, por eso el código que has puesto no funciona (bueno, creo que sí funciona en IE7 y anteriores...). Esto se debe a un tema de seguridad.

Pero desde donde sí puede cerrar una ventana es la ventana donde está el código que abrió la ventana que quieres cerrar.

Para ello debes guardar el puntero a la ventana que se abre (el popup) en una variable. La función window.open() devuelve ese puntero. Y luego hacer .close() como método del puntero en cuestión.

Suponiendo que en el código de la ventana "padre", la variable "w" es ese puntero, en el código de la ventana "hija" (el popup) debes hacer:

Código Javascript :

window.opener.w.close();

Opener es la propiedad que apunta a la ventana responsabe de abrir la actual, es decir, es el puntero a la ventana "padre".

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 19 Jun 2013 07:33 am
Hola DriverOp, gracias por tu respuesta, pero lo raro es que si no cargo el flash sí me deja cerrar la ventana popup.
El problema está en que puede ser que la ventana padre ya no exista cuando pulso en el botón de cerrar.

Alguna idea?

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Jun 2013 12:21 pm
Desconozco.

En mis pruebas, da igual si el flash está o no está. Claro que yo no tengo el .swf que estás usando...

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.