Foros del Web » Programando para Internet » Javascript »

Navegador Safari problemas con javascript

Estas en el tema de Navegador Safari problemas con javascript en el foro de Javascript en Foros del Web. Hola a todos, tengo un problema, os comento: He realizado una precarga de página Html con un script para que aparezca la página cuando todas ...
  #1 (permalink)  
Antiguo 29/03/2007, 05:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
Navegador Safari problemas con javascript

Hola a todos, tengo un problema, os comento:
He realizado una precarga de página Html con un script para que aparezca la página cuando todas las imágenes estén cargadas, funciona en todos los navegadores menos en SAFARI. He buscado por todas partes y no consigo encontrar el problema. Os copio 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.body.style.visibility = "visible";}
else setTimeout("precargar()", 100);
}
//-->
</script>

<body onload="precargar()" style="visibility:hidden;">
</body>

Lo que sucede con este script en safari es que me deja el body en visibility:hidden;
El problema puede estar en:
document.body.style? safari se refiere de otra manera a body?
Gracias por atender mi problema, un saludo.

Última edición por rwcamera; 29/03/2007 a las 05:39
  #2 (permalink)  
Antiguo 29/03/2007, 08:33
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: Navegador Safari problemas con javascript

Hola:

Verás, el código seguramente sea mio, y suelo probar los códigos en todos los navegadores, pero no dispongo de Safari, así que para comprobar el código puedes ayudarme...

Debes estar seguro de que javascript esté funcionando y que cada trozo de código funcione por separado, así que te propongo que me ayudes a buscar el problema (tengo interés en saber el problema)

Te propongo que pongas las partes del código por separado y me indiques los resultados... para facilitar las cosas, tengo una página que puede ayudar: Probador de scripts

Si te parece bien te paso unos códigos básicos para ver las diferencias entre Safari y los navegadores que corren bajo window o linux, por ejemplo:

Código:
<html>
<body>
<img src="../miemoticon.gif" />
<button type="button" onclick="alert(document.images.length)" >prueba</button>
</body>
</html>
... al pulsar en el botón debería aparecer una alerta con el texto "1"... con eso podemos estar seguros de que document.images es un objeto válido... luego habría que probar el atributo "complete"... y tal vez alguna cosilla más...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/03/2007, 10:57
 
Fecha de Ingreso: marzo-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Navegador Safari problemas con javascript

Hola, gracias por responder. Si, el script lo conseguí en este foro y ahora recuerdo la herramienta de probar scripts. Te comento,
No tengo instalado Safari, ya que estoy bajo windows. Pero con una herramienta que se llama browsercam (browsercam.com) puedo hacer capturas de como se ve en todos los navegadores (incluido el Safari). Y he podido comprobar visualmente que no funciona el script en ese navegador, concretamente no cambia a visible el body. Por lo que he leido el Safari se lleva bastante mal con javascript y hay problemas con las ventanas popup y otros scripts.
He quedado con un amigo que tiene Mac para intentar solucionar este problema así que probaré el script en Safari.
Hasta ahora había solucionado todos los problemas que me iban surgiendo con consultas a foros (muchísimos), pero con este no he podido. He probado muchas cosas, todo lo que he visto en internet.

Creo que el problema está en document.body.style, safari no cambia el estilo del body. Probé a poner document.getElementById('idbody').style=visible y al body ponerle una id. pero no funciona.

También probé document.getElementById('idbody').visibility=visib le

Bueno, esperemos solucionar este problema, tiene que ser una tontería.
Seguiré probando a ver si al final consigo solucionarlo.
Un saludo, gracias.
  #4 (permalink)  
Antiguo 01/04/2007, 07:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Navegador Safari problemas con javascript

Con referencia a tu script, me han comentado en otros foros que:

for (var i = 0, total = imgs.length; i < total; i ++)
Safari might not like that. I know from bitter experience that it refuses to accept the for(var x in array) style for loops for most occasions. Try changing it to a conventional:
Code:
for(var i=0;i<imgs.length;i++)

Luego, tengo otro script que realiza la misma función de precarga y funciona correctamente en todos los navegadores (Safari incluido):

<body onload='showContent(document.body)' style='display:none;'>

<script>
function showContent(obj){
obj.style.display = 'block';
}
</script>

Un saludo.
  #5 (permalink)  
Antiguo 01/04/2007, 08:16
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: Navegador Safari problemas con javascript

Hola:

El código que dices que funciona en todos los navegadores no tiene nada que ver con el que has puesto antes, ya que cargar el body es llegar al tag del fin del body (...</body>) pero no implca que las imagenes de la página estén cargadas... tan solo se sabe su url, pero una imagen sin cargar tiene indefinidas sus dimensiones, así que pueden parecer descuadradas o desacomodadas (eso se solventa poniendo las dimensiones con atributos html o estilos)...

Con google translate quise adivinar lo que has puesto, pero me soltó este rollo:

Código:
para (var i = 0, total = imgs.length; i < total; i ++) El safari no pudo tener gusto de eso.
Sé de experiencia amarga que rechaza aceptar para (var x en arsenal) el estilo para los lazos para la mayoría de las ocasiones.
Intento que la cambia a un convencional: Código: para (var i=0; i<imgs.length; i++)
Tal vez el formato del bucle dé problemas...

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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 23:18.