Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] jQuery que se ejecute una sola vez

Estas en el tema de jQuery que se ejecute una sola vez en el foro de Jquery en Foros del Web. Hola amigos, tengo el siguiente problema que se me esta complicando mucho debido a que no tengo mucha experiencia usando jQuery y javascript. Tengo una ...
  #1 (permalink)  
Antiguo 14/06/2013, 08:37
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
jQuery que se ejecute una sola vez

Hola amigos, tengo el siguiente problema que se me esta complicando mucho debido a que no tengo mucha experiencia usando jQuery y javascript. Tengo una pagina que va a ejecutar un iframe con una encuesta para la que instale limesurvey (que por cierto me parece muy buena aplicacion para este proposito).

El problema que tengo es que necesito que este iframe se debera ejecutar una sola vez en la pagina y si el usuario cerro la ventana o lleno la encuesta esta ventana no se vuelva a ejecutar. El sistema de encuesta genera su propia cookie para no permitir que se vuelva a llenar la encuesta y controla las ip, pero necesito que la ventana no vuelva a aparecer.

Imagino que la forma seria generando una cookie pero no tengo la mas minima idea de como programar una cookie (nunca lo hice) y lo que encuentro por la web no entiendo muy bien como hacerlo.

Alguien podria ayudarme??? Gracias por adelantado. Aqui les dejo el codigo que tengo.

Código HTML:
<html>
<head>
	<title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
	<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>
	<script type="text/javascript" src="../source/jquery.fancybox.js?v=2.1.4"></script>
	<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css?v=2.1.4" media="screen" />

	<script type="text/javascript">
		$(document).ready(function() {
		$('.fancybox').fancybox({
		'padding'        : 0,
		'autoScale'      : false,
		'transitionIn'   : 'none',
		'transitionOut'  : 'none',
		'width'          : 680,
		'height'         : 495,
		'wmode'              : 'transparent',
		'allowfullscreen'    : 'true'
		});
	});
	</script>
  
</head>
<body onload='$("#yt").trigger("click");'>
<h1><a id="yt" class="fancybox fancybox.iframe" href="http://localhost/limesurvey/index.php/survey.......">Iframe</a></h1>
</body>
</html> 
  #2 (permalink)  
Antiguo 14/06/2013, 09:30
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años
Puntos: 35
Respuesta: jQuery que se ejecute una sola vez

Hola, yo lo que haría tal y cómo lo tienes montado es colocar una estructura de php en la etiqueta body para comprobar si la cookie que creas al instalar existe y si es así, que no haga nada pero si no existe que automáticamente pinte el evento onload ese que hiciste.

Saludos!
__________________
No hay preguntas tontas, sino tontos que no preguntan.
  #3 (permalink)  
Antiguo 14/06/2013, 11:11
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: jQuery que se ejecute una sola vez

Gracias alberto por tu comentario.

Afortunadamente encontre una forma de hacerlo con un script de jquery viejo pero me funciono! solo tuve que hacer un poco mas de trabajo porque tuve que eliminar los conflictos con las versiones de jquery montando el scritp de migracion y haciendo otras cositas como eliminar el evento del body para hacer mas eficiente el funcionamiento.

Para los que quedan con la duda o quieren saber la forma aqui les dejo la mejor forma que encontre de hacerlo. Tiene dos mensajes a consola para que vean la ejecucion de la cookie pero ya cuando quieran ponerlo a correr lo mejor es quitar los mensajes del log.

Espero les sirva, saludos panas!

Cita:
<html>
<head>
<title>fancyBox - Fancy jQuery Lightbox Alternative | Demonstration</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="../source/jquery.fancybox.js?v=2.1.4"></script>
<link rel="stylesheet" type="text/css" href="../source/jquery.fancybox.css?v=2.1.4" media="screen" />
<script type="text/javascript" src="../source/jquery.cookie.js"></script>

</head>
<body>
<h1><a id="yt" class="fancybox fancybox.iframe" href="http://localhost/limesurvey/index.php/survey/index/sid/528348/newtest/Y/lang/es-MXcccc">Iframe</a></h1>
</body>

<script>
$(document).ready(function(){
if ($.cookie('cuadro')=="encuesta") {
console.log("ya hizo la "+$.cookie('cuadro'));
} else {
$('.fancybox').fancybox({
'padding' : 0,
'autoScale' : false,
'transitionIn' : 'none',
'transitionOut' : 'none',
'width' : 680,
'height' : 495,
'wmode' : 'transparent',
'allowfullscreen' : 'true',
'type' : 'iframe'
});
$.cookie('cuadro', 'encuesta');
console.log("aun no hizo la encuesta y se crea la cookie por eso da valor nulo "+$.cookie('cuadro'));
}
$("#yt").trigger("click");
});
</script>
</html>

Etiquetas: cookie, fancybox, javascript, javascript-funciones
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:21.