Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/06/2010, 04:28
AitorLopez
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Respuesta: Codigo ralentiza pagina

Bueno chicos, pues esto ya está. Al final, la conclusion que saco que es que clave estaba en intervalo = setTimeout(function(){crono()}, 1000);, porque he adaptado el codigo al primer codigo original del principio del hilo y al ultimo de adler, y funciona bien en los dos, haciendo la modificacion de quitar el setinterval.

Quería daros las gracias a los dos por la ayuda que me habeis prestado y por no haber desistido, ya que mas de uno lo hubiera dejado a las primeras de cambio.

Ha quedado claro que sois muy buenos con javascript, y yo, bueno, no tengo ni idea, pero, por experiencia en otros lenguajes, tambien se aprende mucho de estos hilos, aunque no haya hecho ninguna aportacion, nada mas que probar cosas.

Por ultimo, a Adler decirle que no quería poner en duda su codigo ni muchisimos menos, por eso decia que había hecho unas modificaciones, etc, etc., quiero decir que el codigo original que me diste en otro post, tenia que ver con meter una fecha y empezar un reloj, pero no la forma de mostrarlo, y sobre todo, el entorno donde mostrarlo. En cuaquier caso, disculpame, por favor.

Ahora pongo los dos codigos funcionando con las modificaciones, eso si, adaptados a mi ejemplo. Pero si alguien quiere el original de adler con la modificacion que realmente importa, creo que no hace falta que lo ponga ya que queda claro lo que hay que hacer para que funcione.

Gracias de nuevo a los dos. Un saludo.

Codigo primero:

function mostrar_sesion()
{

if (isset($_SESSION['inicio_sesion']))
{}
else
{$_SESSION['inicio_sesion'] = time();}

/*De la variable inicio_sesion, voy recortando y quedandome con el numero que me interesa para cada momento. En la variable mes, le resto 1 porque la funcion javascript decia que el mes habia que restarle uno*/
$dia = date("d",$_SESSION['inicio_sesion']);
$mes = date("n",$_SESSION['inicio_sesion']) - 1;
$ano = date("Y",$_SESSION['inicio_sesion']);
$hora = date("H",$_SESSION['inicio_sesion']);
$minutos = date("i",$_SESSION['inicio_sesion']);
$segundos = date("s",$_SESSION['inicio_sesion']);
?>
<script type="text/javascript">
function crono(){
var dia = <?php echo $dia;?>, mes = <?php echo $mes;?>, anio = <?php echo $ano;?>, hora = <?php echo $hora;?>, minutos = <?php echo $minutos;?>, segundos = <?php echo $segundos;?> //aquí es donde has de establecer la fecha final. Recuerda que enero es el mes 0, así el 5 es junio.
var fechaFinal = new Date(anio,mes,dia,hora,minutos,segundos)

var hoy = new Date()
diferencia = hoy.getTime() - fechaFinal.getTime();

horas = diferencia/1000/60/60;
horasTotales = parseInt(horas)

minutosFaltan = horas - parseInt(horasTotales)
minutosFaltan2 = minutosFaltan*1000*60*60
minutosFaltan2 = minutosFaltan2/1000/60
minutosTotales = parseInt(minutosFaltan2)

segundosFaltan = minutosFaltan2 - parseInt(minutosFaltan2)
segundosFaltan2 = segundosFaltan*1000*60
segundosTotales = parseInt(segundosFaltan2/1000)

falta = "<div id='calContador'><div id='calCuerpo'>";

if(horasTotales < 10) {horasTotales = "0" + horasTotales;}
if(minutosTotales < 10) {minutosTotales = "0" + minutosTotales;}
if(segundosTotales < 10) {segundosTotales = "0" + segundosTotales;}

horasTxt = horasTotales + ":";
minutosTxt = minutosTotales + ":";
segundosTxt = segundosTotales;

if (Math.abs(diferencia) <= 900) {
contadorCompleto = falta + "</div></div>";
clearInterval(crono);
}
else
{
contadorCompleto = falta + horasTxt + minutosTxt + segundosTxt
setTimeout(function(){crono()}, 1000);
}
document.getElementById('contador_regresivo').inne rHTML = contadorCompleto;
}

window.onload=function(){crono();};
</script>
<?php
}


?>

Codigo segundo:

function mostrar_sesion()
{

/*De la variable inicio_sesion, voy recortando y quedandome con el numero que me interesa para cada momento. En la variable mes, le resto 1 porque la funcion javascript decia que el mes habia que restarle uno*/
$fecha = time();

?>
<script type="text/javascript">
function crono(){
var dia = <?php echo date("d", $fecha);?>, mes = <?php echo date("n", $fecha)-1;?>, anio = <?php echo date("Y", $fecha);?>, hora = <?php echo date("H", $fecha);?>, minutos = <?php echo date("i", $fecha)+1;?>
var fechaFinal = new Date(anio,mes,dia,hora,minutos)

var serv_ahora = new Date();
serv_ahora.getFullYear(<?php date("Y", $fecha);?>);
serv_ahora.getMonth(<?php echo date("n", $fecha);?>); // Enero es el mes 0
serv_ahora.getDate(<?php echo date("d", $fecha);?>);
serv_ahora.getHours(<?php echo date("H", $fecha);?>);
serv_ahora.getMinutes(<?php echo date("i", $fecha);?>);
diferencia = fechaFinal.getTime() - serv_ahora.getTime()

segundostotales = parseInt(diferencia /1000);
minutostotales = parseInt(segundostotales/60);
horastotales = parseInt(minutostotales/60);
dias = parseInt(horastotales/24);
horas = parseInt(horastotales & 24);
minutos = parseInt(minutostotales % 60);
segundos = parseInt(segundostotales % 60);

falta = "<div id='calContador'><div id='calFondoEnunciado'>";

if(dias < 10) {dias = '0' + dias;}
if(horas < 10) {horas = '0' + horas;}
if(minutos < 10) {minutos = '0' + minutos;}
if(segundos < 10) {segundos = '0' + segundos;}

diasTxt = dias + ":";
horasTxt = horas + ":";
minutosTxt = minutos + ":";
segundosTxt = segundos;

if (Math.abs(diferencia) <= 900) {
contadorCompleto = falta + "</div></div>";
clearInterval(intervalo);
}
else
{
contadorCompleto = falta + diasTxt + horasTxt + minutosTxt + segundosTxt
intervalo = setTimeout(function(){crono()}, 1000);
}
document.getElementById('contador_regresivo').inne rHTML = contadorCompleto;
}
window.onload=function(){crono();};
</script>
<?php
}


?>