Foros del Web » Programando para Internet » Javascript »

Confirmación al cerrar ventana

Estas en el tema de Confirmación al cerrar ventana en el foro de Javascript en Foros del Web. Hola a todos. Me gustaria saber que puedo hacer para que cuando un usuario vaya a salir de mi pagina web tenga que confirmar si ...
  #1 (permalink)  
Antiguo 24/04/2010, 10:08
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Confirmación al cerrar ventana

Hola a todos.

Me gustaria saber que puedo hacer para que cuando un usuario vaya a salir de mi pagina web tenga que confirmar si va a salir o no, y en caso de que diga que no, se quedé donde está.

He intentado lo siguiente:

En el 'body' utilizo el evento 'onunload' con una funcion que bota un 'confirm' para que el usuario decida si quiere o no salir... cuando pulsa Aceptar todo funciona bien y se sale de la página... pero cuando pulsa Cancelar igual se sale.

HTML:
<body onunload="confirmarSalida();">

JAVASCRIPT:

function confirmarSalida()
{
if(confirm("¿Está seguro de salir de la p&aacute;gina?\nAl salir de la página, se cerrará su sesión.") == true)
return true;
else
return false;
}


Por favor, alguien que me pueda ayudar!!! Gracias de antemano.
  #2 (permalink)  
Antiguo 24/04/2010, 11:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Confirmación al cerrar ventana

Revisa este tema:
http://www.forosdelweb.com/f13/accio...unload-620787/

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 24/04/2010, 11:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

No se puede hacer como lo estás indicando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 26/04/2010, 10:36
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Gracias David por tu aporte. Aunque aun me pregunto como lo hace Meebo, ya que eso es lo que necesitaría hacer....
  #5 (permalink)  
Antiguo 26/04/2010, 10:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

No se puede evitar cerrar la página, sino más bien dar un mensaje.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 26/04/2010, 10:49
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Gracias abimaelrc por tu aporte. Pero soy de los que pienso que si se puede hacer en una página, se podrá hacer en las demás... por eso insisto con el ejemplo de meebo.com, ya que ahi se hace lo que yo necesito hacer e incluso intenté mirar como manejan el evento onbeforeunload para entender lo que sucede... pero no lo entendí bien.
Agradezco cualquier aporte al respecto.
  #7 (permalink)  
Antiguo 26/04/2010, 11:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

Bueno, corrijo, si yo escribo directamente una página web y tengo el código de onbeforeunload, no se puede evitar el cerrar, pero si yo desde una página llamo a otra es decir
Código HTML:
Ver original
  1. <a href="paginaweb.html" target="_blank">pagina nueva</a>
Sí funciona el onbeforeunload.
Código Javascript:
Ver original
  1. window.onbeforeunload = function() {
  2.     var confirmar = confirm("algo");
  3.     if(confirmar){
  4.         alert("Nos vemos.");
  5.     }else{
  6.         return false;
  7.     }
  8. }
Pero los navegadores pueden evitar este tipo de código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 26/04/2010, 11:16
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Mmmm... interesante. Voy a intentarlo de esa forma y comentaré al respecto si funciona. Gracias.
  #9 (permalink)  
Antiguo 26/04/2010, 11:23
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Confirmación al cerrar ventana

Creo que están hablando de cosas diferentes. Lo que no se puede es evitar el cierre de la ventana (ni meebo ni Merlín ni nadie puede evitarlo, afortunadamente).
Si lo que se quiere es lanzar un confirm, hay que usar el evento onbeforeunload y confiar en la buena predisposición de los navegadores, que aunque la mayoría reconoce ese evento como válido, hay algunos que no lo reconocen:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin t&#237;tulo</title>
<script>
onbeforeunload=function(){return '';}
</script>
</head>

<body>
</body>
</html> 
Edito: bueno, se me adelantaron, pero lo curioso es que no es necesario un confirm ;)
  #10 (permalink)  
Antiguo 26/04/2010, 11:24
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Ya lo intenté pero no funciona como dices... aun seguí mirando el codigo de meebo, pero me resulta muy confuso...

De todas formas gracias.
  #11 (permalink)  
Antiguo 26/04/2010, 11:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

Yo traté el que te propuse (y es verdad lo que indica Panino de que no es necesario un confirm, ya que lo navegadores lo hacen por ti) y funcionó. O sea llamando una página desde otra como te expuse.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 26/04/2010, 11:48
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

mmm... si, ambos tienen razón...

el otro asunto esta en que necesito cerrar la sesion cuando el usuario presione Aceptar, pero si no, entonces que no la cierre, por
  #13 (permalink)  
Antiguo 26/04/2010, 11:48
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

que cuando acutalmente pulsa Cancelar igual se sale, como haria eso con el onbeforeunload??
  #14 (permalink)  
Antiguo 26/04/2010, 14:38
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Bueno, muchachos creo que encontre una solución al dilema y dice asi:

Utilizo los eventos onbeforeunload y onunload, de tal forma que el onbeforeunload me sirve de validador y el onunload para ejecutar la funcion de cerrado de sesion.

Cuando se utiliza el onbeforeunload le bota a uno un mensaje para confirmar si va salir de la pagina o no, si presiono Cancelar puedo permanecer en la misma página sin activar en onunload, pero si le doy Aceptar, prosigo a la descarga de la pagina y ahi es donde se activa el evento onunload, en el cual, activo la funcion de cerrado de sesion.

Espero haberme hecho entender.

De todas formas gracias a todos.
  #15 (permalink)  
Antiguo 26/04/2010, 15:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Confirmación al cerrar ventana

Bueno, si eso te satisface, perfecto, pero la verdad es que es poco confiable incluso confiando en que el usuario tenga activado javascript, porque no son eventos estandar (unload sí es estandar, pero onunload no y hay navegadores como ópera que no lo reconocen). Lo más confiable es hacer el cierre del lado del servidor, detectando si el usuario se desconectó: http://www.forosdelweb.com/3111500-post7.html
  #16 (permalink)  
Antiguo 26/04/2010, 16:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

Un dato, ese código funciona siempre y cuando el servidor donde lo estén usando no tenga safe mode activado. Porque requiere de set_time_limit. Ahora yo tengo una pregunta, como funciona esta parte
Código javascript:
Ver original
  1. if(callback)
  2.     callback(H.responseText);
  3. H.onreadystatechange=function(){}
  4. H.abort();
  5. H=null;
Entiendo que se ejecuta una vez reciba los datos del servidor como por ejemplo precionando la tecla de ESC o saliendo de la página. Pero no entiendo porque le pasas el valor del H.responseText al callback. Los otros tres lo que entiendo es para dar por terminado el objeto.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 26/04/2010, 17:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Confirmación al cerrar ventana

En realidad en ese caso no hace falta porque el callback no hace nada -pasa que la función que uso es parte de una de mis librerías de código y está preparada para usarse en otros requests que sí hacen cosas-. ;)
Lo que sí es importante y muchos desestiman es la parte en que abortamos y nulificamos.
  #18 (permalink)  
Antiguo 26/04/2010, 17:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Confirmación al cerrar ventana

Uffff, ya me estaba dando jaqueca el ver ese código y no entendía que hacia Vengo ahora voy por una panadol o tylenol
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #19 (permalink)  
Antiguo 06/10/2010, 13:59
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Confirmación al cerrar ventana

Hola , veo que ya tiene tiempo este post, pero si es posible comentaras exactamente como le hiciste para resolver tu problema ya que tengo el mismo problema, y en especifico busco hacer lo mismo que hiciste , hacer que el usuario cierre su sesion, espero me puedas ayudar.
  #20 (permalink)  
Antiguo 07/10/2010, 08:40
 
Fecha de Ingreso: junio-2010
Mensajes: 76
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Confirmación al cerrar ventana

Yo pienso que eduardkorn al principio lo tenia bien pero le faltaba un cosa que es:
<body onunload="return(confirmarSalida())"> y lo demas igual que lo tenia......

Etiquetas: cerrar, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.