Foros del Web » Programando para Internet » Javascript »

Mantener Cuenta regresiva

Estas en el tema de Mantener Cuenta regresiva en el foro de Javascript en Foros del Web. Hola comunidad, en estos foros encontre gran ayuda con una cuenta regresiva en javascript, sin embargo el script que encontre se reinicia cada vez que ...
  #1 (permalink)  
Antiguo 01/05/2009, 19:30
Avatar de javico40  
Fecha de Ingreso: agosto-2008
Ubicación: Evergreen Terrace 123
Mensajes: 288
Antigüedad: 16 años, 5 meses
Puntos: 9
Pregunta Mantener Cuenta regresiva

Hola comunidad, en estos foros encontre gran ayuda con una cuenta regresiva en javascript, sin embargo el script que encontre se reinicia cada vez que alguien entra a la pagina, nesesito que si el usuario sale de la pagina, o si cambia a otra pagina la cuenta se mantenga, es decir si la cuenta eran 3 minutos y el usuario cambia de pagina en 2 cuando vuelva a la pagina vera que la cuenta continua, y si se desconecta igualmente, gracias por su ayuda, el siguiente es el script:

Código:
<html>
<head>
<title></title>
<script>
   var timeLimit = 40; //tiempo en minutos
   var conteo = new Date(timeLimit * 60000);

   function inicializar(){
      document.getElementById('cuenta').childNodes[0].nodeValue = 
                  conteo.getMinutes() + ":" + conteo.getSeconds();
   }

   function cuenta(){
      intervaloRegresivo = setInterval("regresiva()", 1000);
   }

   function regresiva(){
      if(conteo.getTime() > 0){
         conteo.setTime(conteo.getTime() - 1000);
      }else{
         clearInterval(intervaloRegresivo);
         alert("Fin");
      }

      document.getElementById('cuenta').childNodes[0].nodeValue = 
                  conteo.getMinutes() + ":" + conteo.getSeconds();
   }

   onload = inicializar;
</script>
</head>
<body>
<table border=0 cellspacing=0 cellpadding=0 >
<tr>
   <td><div id="cuenta">0</div></td>
</tr>
</table>
<form>
   <input type="button" value="Cuenta Regresiva" onclick="cuenta()">
</form>
</body>
</html>
  #2 (permalink)  
Antiguo 02/05/2009, 01:20
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 3 meses
Puntos: 19
Respuesta: Mantener Cuenta regresiva

Si solo queres usar JS.. podrias usar cookies por ejemplo.... agregas una cookie con la hora de inicio del conteo(horaPasada) y la cantidad de tiempo de la cuenta regresiva(conteoRegresivo)...

el tratamiento de document.cookie tendrias que buscar...

si existe dicha cookie... haces la siguiente cuenta... conteoRegresivo-(horaActual-horaPasada)

  #3 (permalink)  
Antiguo 02/05/2009, 10:43
Avatar de javico40  
Fecha de Ingreso: agosto-2008
Ubicación: Evergreen Terrace 123
Mensajes: 288
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Mantener Cuenta regresiva

Hola FernandO, mirando en post de foros del web se me ocurrio la idea de usar mysql, guardo en una tabla la fecha de finalizacion del evento, luego a la funcion de la cuenta regresiva le paso la fecha que saco de la base de datos en php, encontre una funcion que calcula el tiempo que falta apartir de una fecha que le pases:

Código:
<?PHP
//$move=$_GET['action'];
$move="hola";
?>
<html>
    <title>Prueba de tiempo</title>
<meta>

<script type="text/javascript" language="JavaScript">
 var futuro= new Date (2009,6,3,20,16);
var actualiza = 1000;
function faltan(){
var ahora = new Date();
var faltan = futuro - ahora;
if (faltan > 0){
var segundos = Math.round(faltan/1000);
var minutos = Math.floor(segundos/60);
var segundos_s = segundos%60;
var horas = Math.floor(minutos/60);
var minutos_s = minutos%60;
var dias = Math.floor(horas/24);
var horas_s = horas%24;
document.formulario.reloj.value= dias + " dias : " + horas_s + " horas : " +
+minutos_s + " minutos : " + segundos_s + " segundos" ;
setTimeout("faltan()",actualiza);
}else
{
document.formulario.reloj.value= "0 dias : 0 horas : 0 minutos : 0 segundos" ;
return true;
}
}
</script>
</meta>
<body onload="faltan()">
<?PHP
if($move=="hola"){
?>
<script languaje="javascript">
alert(funciona);
faltan();
</script> 
<form name="formulario">
<input type="text" name="reloj" value="" size="55" style="border : 0px ; text-align : center">
</form> 
<?PHP
}
?>
  <table>
  <tr><td><a href="index2.php?action=1" onclick="javascript:faltan()">Temporizar</a></td></tr>
  </table>
</body>
</html>
El unico problema que veo es que la hora guardada seria la del servidor en cambio la hora con la que se comparara seria la del cliente, no se si lo mejor sea tomar la fecha de inicio del cliente para hacer eso mejor, nesesito ayuda porque el script javascript usa var futuro, no he podido hacer que reciva como parametros esos valores, si me puedes ayudar con eso seria de gran ayuda.
  #4 (permalink)  
Antiguo 02/05/2009, 17:14
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 3 meses
Puntos: 19
Respuesta: Mantener Cuenta regresiva

Si te vas a basar en la hora del CLIENTE... tenes que pasarle la hora inicial por medio de javascript.. a mysql..... no guardar la hora desde php y despues compararla con la que obtenes por javascript... o comparas CLIENTE-CLIENTE(js-js)... o SERVIDOR-SERVIDOR(php-php)....

  #5 (permalink)  
Antiguo 02/05/2009, 17:46
Avatar de javico40  
Fecha de Ingreso: agosto-2008
Ubicación: Evergreen Terrace 123
Mensajes: 288
Antigüedad: 16 años, 5 meses
Puntos: 9
Respuesta: Mantener Cuenta regresiva

Si creo que sera servidor-servidor porque la hora del cliente puede variar, muchas gracias por la ayuda.
  #6 (permalink)  
Antiguo 02/05/2009, 17:59
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 19 años, 3 meses
Puntos: 19
Respuesta: Mantener Cuenta regresiva

Podes basarte en zona horaria GMT tambien... checkealo... pasa que no se bien para que queres implementar el conteo regresivo... simplemente te tiro respuestas para diversas opciones... no tengo idea cual es la mas adecuada... pero proba con cual estas mas agusto para tu caso
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 21:52.