Foros del Web » Programando para Internet » Javascript »

Problema con javascript

Estas en el tema de Problema con javascript en el foro de Javascript en Foros del Web. Siento repetir, me equivoqué de sitio. Pido a los moderadores que borren mi otro post. Necesito una ayudita, estoy montando una web que tarda bastante ...
  #1 (permalink)  
Antiguo 09/01/2007, 23:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 24
Antigüedad: 19 años, 4 meses
Puntos: 0
Problema con javascript

Siento repetir, me equivoqué de sitio. Pido a los moderadores que borren mi otro post.
Necesito una ayudita, estoy montando una web que tarda bastante en cargar, pero no me interesa reducir el peso porque me gusta así, por eso pensé en ponerle una imagen de ´cargando...´ mientras se carga la pagina pero no sé como hacerlo he estado buscando y he encontrado varias cosillas, pero ninguna hace exactamente lo que yo quiero, supongo que modificando un poco el código de alguna de las posibilidades que he encontrado se podrá hacer, pero como no sé javascript no sé como hacerlo.
Una de ellas (de esta misma web) es:
<html>
<head>
<title>Título</title>
<div ID="waitDiv" style="position:absolute;left:300;top:300;visibili ty:hidden">
<table cellpadding="6" cellspacing="0" border="1" bgcolor="#000000" bordercolor="#FFFFFF">
<tr><td align=center>
<font color="#ffffff" face="Verdana" size="4">Cargando página...</font>
<img src="/images/cargando.gif" border="1">
</td>
</tr></table>
</div>

<SCRIPT>
<!--
var DHTML = (document.getElementById || document.all || document.layers);
function ap_getObj(name) {
if (document.getElementById)
{ return document.getElementById(name).style; }
else if (document.all)
{ return document.all[name].style; }
else if (document.layers)
{ return document.layers[name]; }
}
function ap_showWaitMessage(div,flag) {
if (!DHTML) return;
var x = ap_getObj(div); x.visibility = (flag) ? 'visible':'hidden'
if(! document.getElementById) if(document.layers) x.left=280/2; return true; } ap_showWaitMessage('waitDiv', 3);
//-->
</SCRIPT>
</head>
<body>
Cuerpo del sitio
</body>
<SCRIPT language=javascript>
<!--
ap_showWaitMessage('waitDiv', 0);
//-->
</SCRIPT>
</html>

...Pero tiene el problema de que se va viendo como van cargando las imagenes hasta que termina el proceso de carga y entonces se borra el gif de cargando. Y yo lo que quiero es que salga el gif pero no se vea el resto de la pagina hasta que esté totalmente cargada.

El segundo ejemplo es:
<script language="javascript">
<!--
function precargar() {
imgs = document.images;
precargadas = true;
for (var i = 0, total = imgs.length; i < total; i ++)
precargadas = (precargadas && imgs[i].complete);
if (precargadas) document.body.style.visibility = "visible";
else setTimeout("precargar()", 100);
}

//-->
</script>
</HEAD>
<BODY onLoad="precargar()" style="visibility: hidden">

Que hace que no se vea nada hasta que se carge completamente la pagina. Pero tampoco esto es exactamente lo que busco.
Lo que yo quiero es que salga solo el gif de cargando mientras se carga toda la pagina y luego desaparezca el gif y aparezca la pagina cargada.

Quizás la solucion sea llamar a la página a cargar desde otra anterior pero tampoco sé como hacerlo. Por favor si alguien me pudiera prestar una ayudita le estaría muy agradecido. La verdad es que esto me está mareando muchísimo. Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 10/01/2007, 01:28
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con javascript

Hola:

Me parece que el últimi script es de mi autoría (tiene un estilo que me resulta muy familiar... )

Tan solo tendrías que cambiar la línea que muestra el cuerpo del documento por un par de líneas, y que el cuerpo tenga un par de capas... una que sea el cuerpo y la otra la imagen...

<body onload="precargar()">
<div id="cuerpo" style="display: none" />
... aquí el cuerpo de la página ...
</div>
<div id="cargando" style="height: 100%; background: url(reloj.gif) no-repeat center center" >
<!-- La imagen es el fondo de la capa... y se supone que se mostrará centrada -->
</div>
</body>

... y en la función precarga...

if (precargadas) {
document.getElementById("cargando").style.display = "none";
document.getElementById("cuerpo").style.display = "block";
}
else setTimeout("precargar()", 100);
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 10/01/2007, 07:50
 
Fecha de Ingreso: diciembre-2004
Mensajes: 24
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Problema con javascript

Ante todo, muchas gracias caricatos por tu respuesta.
Así es como me quedaría el código:
<script language="javascript">
<!--
function precargar() {
imgs = document.images;
precargadas = true;
for (var i = 0, total = imgs.length; i < total; i ++)
precargadas = (precargadas && imgs[i].complete);
if (precargadas) {
document.getElementById("cargando").style.display = "none";
document.getElementById("cuerpo").style.display = "block";
}
else setTimeout("precargar()", 100);

//-->
</script>
</HEAD>
<BODY onLoad="precargar()" LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<div id="cuerpo" style="display: none" align="center" />
<!-- Cuerpo -->
</div>
<div id="cargando" style="height: 100%; background: url(imagenes/cargando.gif) no-repeat center center" ></div>
</BODY>
</HTML>

y el resultado. Carga bien imagen de cargando en el centro de la pantalla, transfiriendo datos y, cuando termina la descarga no sucede nada, no aparece el todo el cuerpo de la pagina sino que permanece el gif, en que me he podido equivocar?

Gracias, de nuevo.
  #4 (permalink)  
Antiguo 10/01/2007, 09:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con javascript

Hola:

Si es tal cual... te falta cerrar la función precarga (la llave de cierre)...

Por cuirto, lo acabo de probar y va bien.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 10/01/2007, 11:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 24
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Problema con javascript

Gracias caricato, acabo de darme cuenta que somos paisanos, jeje. Saludos.
En fin, me da verguenza preguntarlo, pero cómo que me falta cerrarlo?, es que no tengo ni idea de javascript y ya estando tan cerca de conseguirlo, no me gustaría dejarlo así por miedo a preguntar. A qué te refieres exactamente?.
  #6 (permalink)  
Antiguo 10/01/2007, 11:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con javascript

Hola:

A qué te refieres con paisanos... España es muy grande, o estás más cerca...

La función no está completa...

<script language="javascript">
<!--
function precargar() {
imgs = document.images;
precargadas = true;
for (var i = 0, total = imgs.length; i < total; i ++)
precargadas = (precargadas && imgs[i].complete);
if (precargadas) {
document.getElementById("cargando").style.display = "none";
document.getElementById("cuerpo").style.display = "block";
}
else setTimeout("precargar()", 100);
} // <-- se trata de estas llaves de cierre
//-->
</script>

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 10/01/2007, 11:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 24
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Problema con javascript

Buahh, perfecto, era de perogrullo, no hace falta saber programar para darse cuenta de eso, pero estas pequeñas cosas tiene la programación, no?, jeje. una semana atrancado con el javascript de los c***, muchísimas gracias.
España es muy grande, pero Málaga no tanto, soy de Torrox, unos 50 km nos separan.
Saludos, y muchas gracias por todo
  #8 (permalink)  
Antiguo 10/01/2007, 12:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con javascript

Hola:

¡Je, je Paisano! Cuando se traban cosa así, cabrea un poco...

Te recomiendo que pruebes tus páginas con navegadores que tengan consola de error como opera o mozilla... te puedes ahorrar un tiempo valiosísimo en cosas tan simples...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 10/01/2007, 13:13
 
Fecha de Ingreso: diciembre-2004
Mensajes: 24
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Problema con javascript

Pues sí, tienes razón, la cuestión es que utilizo mozilla junto con explrer hace mucho tiempo y sin embargo desconocía esta propiedad de mozilla.
Una cosilla más, para rematarlo. Como podría incluir un pequeño texto junto con el gif, es decir, en lugar de la barra de cargando quisiera poner una imagen fija o animada y debajo el texto de cargando y paciencia y todo eso, como puedo añadir el texto?
  #10 (permalink)  
Antiguo 10/01/2007, 13:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Problema con javascript

Hola:

Las imagenes como fondo de una capa se centran con estilos sin ningún problema, pero si quieres poner texto tendrías que poner otra capa con coordenadas absolutas para calcular la altura... en tal caso, para evitar una posible superposición creo que sería mejor poner también la imagen en esa capa...

Creo que poniendo en la capa como estilos text-align: center y top: 50% podría funcionar (y entre la imagen y el texto un salto de línea (<br />)... pruébalo y nos cuentas...

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 09:55.