Foros del Web » Programando para Internet » Javascript »

Cancelar unload()

Estas en el tema de Cancelar unload() en el foro de Javascript en Foros del Web. Hola que tal, veran tengo un problemilla. Tengo una pagina en la que hay un formulario para cambiar algunos datos de la propia pagina, algo ...
  #1 (permalink)  
Antiguo 06/10/2007, 13:03
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
[SOLUCIONADO] Cancelar unload()

Hola que tal, veran tengo un problemilla.
Tengo una pagina en la que hay un formulario para cambiar algunos datos de la propia pagina, algo asi como un editor de perfil de usuario, el caso, es que quiero hacer que si el usuario intenta salir de la web sin guardar los cambios (un submit) salga un confirm() pidiendo confirmacion de lo que va a suceder.

De momento yo tengo en el body un onload que asigna un valor a una variable (sin_enviar=0), en el formulario un onsubmit que cambia de valor esa variable (sin_enviar=1) y en el body, otro evento, un onunload, el cual verifica si la variable sin_enviar vale 0 ó 1, si vale 1, no pasa nada, por significa que ha hecho un submit, en cambio, si vale 0 debe salir el confirm() para asegurar que se quiere salir, hasta aqui bien, me sale el confirm, y me devuelve 1 si acepto y 0 si cancelo, pero tanto en un caso como en otro, me sale de la pagina, es decir, cuando me devuelve un 1, pongo un return true, y si me devuelve un 0 pongo un return false, pero de todas formas, siempre me sale de la pagina y pierdo los datos del formulario.

como podria cancelar el abandonar la pagina cuando el confirm=0?

Gracias!

Última edición por DooBie; 09/10/2007 a las 12:57 Razón: Problema solucionado.
  #2 (permalink)  
Antiguo 08/10/2007, 02:04
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Re: Cancelar unload()

Para eso igual te viene bien usar onbeforeunload en vez de onunload, aunque no es recomendable porque sólo lo reconocerá IE.

No lo he probado, pero ¿y si en vez de poner return false pones history.back()?

Me parece que eso no va...

y si pones location.href=location.href se pierde el contenido del formulario...

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 08/10/2007, 07:04
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Re: Cancelar unload()

Seguire probando cosas, a ver si doy con la solucion, pero, he estado pensando en posibles paginas que haya visitado, y recuerdo, hace tiempo, algunas paginas que salia algo parecido, cuando intentabas salir, te pedia un confirm, si cancelabas, seguias en la pagina, sino, pues salida normalmente.
Intentare hacer memoria a ver si doy con ella :p

Gracias por contestar.
  #4 (permalink)  
Antiguo 09/10/2007, 12:09
 
Fecha de Ingreso: marzo-2007
Mensajes: 163
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Cancelar unload()

Si encuentras la página o la solución avísanos porfa que sería de mucha utilidad

  #5 (permalink)  
Antiguo 09/10/2007, 12:56
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Re: Cancelar unload()

pues, lo habia dejado por imposible, pero, al leer tu post, me ha venido una idea a la cabeza, y ZAS! en toda la boca! lo he conseguido!!! :D

Os cuento:
Antes de nada, decir que en ese formulario uso tinyMCE, con lo que cambiara un "poco" las soluciones para otros formularios "normales" pero la idea, es la misma.
Yo pretendia cancelar el hecho de que el usuario saliese de la pagina... y eso, es imposible, sencillamente, porque podria entrar en un bucle, ya que si pones una de esas funciones para que cancele el salir de la pagina, y el usuario cierra el navegador, le saltara el mensaje, con lo que si se quiere ser malintencionado, se podria crear un bucle infinito, nose si me explico por donde va la cosa... pero bueno, el tema no es ese...
Despues de leer algunos post en güiri, en el que basicamente decian lo mismo, opte por probar... ¿por que en lugar de cancelar el que el usuario salga, no sacamos el confirm de si quiere guardar los cambios o no los quiere cambiar? al estilo de cuando sales de cualquier programa tipo word, por ejemplo, si le dices que SI quieres guardar los cambios, pues hacemos un form.submit() y si no quiere guardar los cambios, no hacemos nada, tan sencillo como eso!!!!!!!!!!!!!
Decir que para que me funcione a mi con el tinyMCE, he tenido que cambiar el form.submit() por tinyMCE.execCommand('mceSave') que es la funcion que se ejecuta para guardar los cambio con tinyMCE.

Pues nada, una cruz mas en mi lista de tareas :D


Gracias, y espero que se comprenda la idea.
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 07:22.