Cerrar ventana

Quisiera saber como puedo cerrar una ventana madre cuando se cargue una ventana hija, lo que pasa es lo siguiente:
Tengo una página llamada index.htm desde la cual quiero abrir una ventana con window. Open y quiero que inmediatamente se cierre index.htm sin que me salga el letrero que dice que se "esta tratando de cerrar la ventana que se está cargando" y pregunta si quiero cerrarla o no... ¿cómo puedo hacerlo?
Respuesta
1
Pues yo una vez investigue si era posible cerrar el explorer sin el mensaje y al parecer no es posible, al menos no con Javascript.
Bueno, y entonces que hiciste, como solucionaste tu problema
Pues la solución es más o menos la siguiente:
El browser por ningún motivo te permitirá cerrar la ventana por medio de código A MENOS que haya sido creada precisamente por código.
Pues la solución es más o menos la siguiente:
El browser por ningún motivo te permitirá cerrar la ventana por medio de código A MENOS que haya sido creada precisamente por código.
http://developer.netscape.com/docs/manuals/js/client/jsref/window.htm#1201822
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/close_0.asp
http://jibbering.com/faq/#_414
Usa windows. Open en vez de href.
Desgraciadamente como lo veo la ventana principal es precisamente la única que no podrás cerrar de esta forma.

10 respuestas más de otros expertos

Respuesta
1
Ok
A ver si tengo un poco de tiempo y lo miro más en profundidad.
De nada, siempre es más divertido trabajar dos en un problema que uno solo.
He estado buscando y he encontrado una cosa que te viene a pedir de boca. Te lo pongo tal cual lo he encontrado, no tengo cabeza en estos momento para depurarlo y adaptarlo. Basicamente es lo que tu quieres = librarte del mensaje. El pero que solo funciona para el Internet Explorer.
Este script nos permitirá cerrar una ventana padre (primaria) sin esa molesta petición de confirmación de windows.
Solo funciona para Internet Explorer.
Incluir esto entre la etiqueta </head> y <body>...
<object id=closeWin type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Close"></object>
Tambien podreis utilizar para colocarlo dentro de body...
<a href="javascript: closeWin.Click();">Cerrar</a>
Vale, se que soy un pesado y lo pongo todo por partes, pero me ha parecido interesante esta serie de artículos para el problema. Cuando tengas tiempo hechales un ojo. Sobre todo por que nos olvidamos de un atributo de windows, el opener.
http://www.desarrolloweb.com/articulos/609.php?manual=22
Bye
Vamos a ver, si no entiendo mal lo que quieres es que des una ventana xxx.html se te abra una de tipo showdialog y te cierre la anterior. Cuando hacen submit que se cierre la dialogo y que te habrá la xxx.html.
Si es eso el redireccionador no te va a servir ... Ahora me queda una duda, ¿al entrar en la página xxx.html te va a abrir automáticamente el showdialog o tiene que realizar alguna acción?.
Si la abre directamente ... ¿qué pinta la página xxx.html?
Si no lo abre directamente y tiene que realizar alguna acción (pulsar botón, link ...). Se podría hacer un javascript en el que se lanzara con window. Open el showdialog y en la linea siguiente hiciera el close. Ese Javascript me temo que es el que has hecho tu desde un principio... y te va a salir el mensaje igual... aunque no comprendo el porque te hace la pregunta.
<form>
<p>
<input type="button"
value="Cerrar esta ventana"
onclick="window.close();">
</p>
</form>
Es un javascript que cierra la ventana actual y no pide confirmación.
Solución: prueba con dos javascript uno que se llame abrir ventana para abrir el showdialog. Y otro que se llame cerrar ventana para cerrar la ventana actual. Primero lanza el de abrir el showdialog y luego el de cerrar a ver si de esa forma evitamos el mensaje "esta tratando de cerrar la ventana que se está cargando" ya que teóricamente el código del xxx.html ya se ha cargado y esta llamando a dos javascript. No se me ocurre nada más.
Ok, mientras yo reviso lo que me enviaste, cosa que te agradezco mucho, aquí te explico mejor el problema:
Bueno mira lo que pasa es lo siguiente:
Estoy haciendo una interfaz de reservas, esta es mi página principal. Cuando una persona quiere hacer una reserva, yo abro una venta de tipo showmodaldialog(); en la cual pido los datos referentes (Nombre, Fecha y hora de la reserva. Etc.) cuando la persona envía estos datos, yo debo cerrar el showmodaldialog y recargar la página de reservas (la principal) para que se vea que la reserva se hizo.
El problema de esto, es que yo necesito que siempre que yo quiera recargar mi página principal desde las ventanas showmodaldialog o window.open (cualquiera de las dos utilizadas para pedir datos), esta se recargue en la misma ventana en la que se encuentra y no que se abran múltiples ventanas de la página principal..
Esto lo solucioné haciendo lo siguiente:
Cuando se abre la "interfaz de reservas" lo primero que abro es una ventana en la que pido el login y el password, si estos son correctos entonces utilizo el window.open() para abrir mi ventana principal de reservas. A este window.open le pongo el parámetro para especificar el nombre de la ventana de reservas, este nombre de ventana me permite que cuando se necesite recargar la ventana principal de reservas lo pueda hacer utilizando la función window.open(); pasándole el mismo nombre de ventana con el que fue creado y así nunca tendré dos ventanas de reservas abiertas..
Y así todo funciona de maravilla, lo único que no me funciona, y es la pregunta que te vengo haciendo.. es como cerrar la ventana en la que pido el login y password sin que el usuario tenga que confirmar el cierre de esta ventana (ya que si el dice no la ventana permanece abierta y no quiero eso), que como ya te dije, es la que me abre la ventana principal de reservas (con el window.open) una vez haya confirmado que estos sean correctos.
Gracias por ayudarme...
Pues así a voz de pronto lo primero que se me ocurre es algo sencillo pero efectivo. La solución seria utilizar un javascript redireccionador, es decir en la venata index pones el redireccionador y instantáneamente o al cabo de por segundos la página index se va directamente al otro html sin necesitar el window. Open y sin tener que cerrar la anterior.
Aquí te explico como
JavaScript redireccionador.
Sirve para que al entrar en una página web, te lleve a otra sin que el usuario tenga que pinchar en ningún sitio. Aquí se explican tres posibles formas de lograrlo. Hay que sustituir redirección.html por la página a la que quieras que se redirija. También puedes usar URLs:
1- Código (ubicarlo entre las etiquetas <head> y </head>):
<head>
<script languaje="JavaScript">
location.href='redireccion.html';
</script>
</head>
2 - Otro método puede ser agregando la acción OnLoad dentro del Body:
<BODY onLoad = "parent.location = 'redireccion.html'">
3 - También podemos redireccionar la página a los X segundos (en esto caso 15):
<META HTTP-EQUIV="Refresh" CONTENT="15;URL=redireccion.html">
Bye y espero que te sirva la solución
Respuesta
1
La única forma en que el IExplorer no te muestra ese mensaje es con las ventanas creadas con la función window. Open().
En las ventanas normales siempre te va a preguntar antes si quieres cerrarla.
PERO... acá te dicen como hacerlo
http://programacion.com/foros/27/msg/10160/
Aunque no es una solución muy cómoda, pero es solución al fin.
Respuesta
1
Cuando intentas cerrar una ventanada del explorador no se puede cerrar sin que te pregunte eso. El window. Close funciona directamente solo con pop-ups. Podrias probar con window. Opener y cerrarlo pero lo más seguro es que te vuelva a preguntar por la clase de objeto que es window.
Respuesta
1
Necesito que me des el código con el que estas abriendo la nueva página hija.
Pues dentro del body de la ventana madre pongo
window.open();
window.close();
Al window.open le paso el url y los argumentos, el me abre la ventana hija, pero luego sale el mensaje que la página que esta abriendo será cerrada si le digo que si, me cierra la ventana madre, si le digo que no la deja abierta, entonces lo que yo quisiera es que no hiciera esta pregunta sino que cierre la ventana sin preguntar...
Te cuento que he intentado por todos los medios hacer lo que necesitas y no hay forma de que resulte...
Como no estoy seguro de que sea imposible, no puedo contestarte definitivamente...
En todo caso, lo más cerca que estuve de hacerlo fue con window. Opener. Close() asociado al evento onload de la ventana hija, pero solo resulta si la página madre también ha sido abierta mediante un script...
Dale un vitazo a este sitio: http://programacion.com/foros/27/msg/10160/
Allí hay una discusión al respecto...
También esta esta otra:
http://www.desarrolloweb.com/articulos/609.php?manual=22
Eso es todo lo que te puedo contestar.
Respuesta
1
En principio no es posible, Eso forma parte de la seguridad de javascript en navegadores.
Pero si existe un componente de microsoft que te cierra la ventana del navegador sin preguntar. Pero para ello deberás tener conexión a Microsoft.
El código que debes pegar en la página es:
<OBJECT id=MyControl type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="http://activex.microsoft.com/activex/controls/htmlhelp/HHCTRL.ocx#Version=4,72,8252,0"; width=100 height=100> <PARAM name="Command" value="Close"> <PARAM name="Button" value="Cerrar ventana"></OBJECT>
Respuesta
En los parámetros de la apertura le debes mover,
pero lo que me preguntas es acerca de javascript no de html
Respuesta
Por desgracia cada vez que intentes cerrar la ventana madre te va a salir el dichoso mensaje de aviso, y no conozco ningún método para evitarlo.
Respuesta
A la paz de dios, pues mira ahora no caigo si puede darte problemas lo que te voy a contar pero que coño, prueba y luego me cuentas. La manera de acceder y cerrar la ventana padre puede ser: window. Opener. Close(); desde la ventana hija, posiblemente no lo sea, no estoy borracho. Con dios.
Respuesta
-1
Si me das un tiempito te lo averiguo, ya que no tengo idea :-P
Respuesta
-1
Podrías poner ...
onClick("javascript:self.close();")
¿Así solucionaría algo...?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas