Foros del Web » Programando para Internet » Javascript »

Safari & SetTimeOut

Estas en el tema de Safari & SetTimeOut en el foro de Javascript en Foros del Web. Buenos días. La pregunta es simple. ¿Cómo hago para que este código funcione en Safari? Código: setTimeout( FadeOut, 20, callback, elem, contenido ); Lo explicaré ...
  #1 (permalink)  
Antiguo 30/05/2008, 05:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
Safari & SetTimeOut

Buenos días.

La pregunta es simple. ¿Cómo hago para que este código funcione en Safari?

Código:
setTimeout( FadeOut, 20, callback, elem, contenido );
Lo explicaré un poco:

FadeOut es una función perfectamente definida, que toma como parámetros un puntero a una función, un elemento del DOM y una String (por ese orden).

El código de ahi arriba se supone que es standard, pero como todos sabemos hay un navegador que se pasa los estándares por el forro de los *******. Esta es la solución que funciona para FF y IE7:

Código:
setTimeout( function(){FadeOut(callback, elem, contenido);}, 20 );
Pero ¡oh, sorpresa! En Safari no funciona ninguna de las 2, y no se me ocurre ninguna otra forma de hacerlo.

GRASIAS DE ANTEBRASO. (xDDD)

Saludos.

PD: Que la solución no incluya variables globales, por favor. Y, dado que es una función "crítica", mejor que no incluya eval() tampoco, pero me sirve igual.
  #2 (permalink)  
Antiguo 30/05/2008, 08:17
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Safari & SetTimeOut

El primer código no sé de dónde sacas que es estándar, porque lo cierto es que SetTimeout sólo acepta 2 parámetros.

Lo estándar es lo que pones en el segundo código. Y, en principio, Safari lo soporta.

¿Qué versión de Safari usas? ¿Qué error te da?
  #3 (permalink)  
Antiguo 30/05/2008, 12:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Safari & SetTimeOut

Saco que es estándard de aqui, y también lo he visto en más sitios. Aunque posiblemente esté equivocado, porque esa página es del motor Gecko...

No uso ninguna versión de Safari, lo usa un amigo que me dijo "tu página no funciona". Tiene MAC OS X 10.4 (Tiger).

No da ningún error, simplemente el script llega hasta ahí y se para. Jaja, cómo no se me habría ocurrido antes, le diré a mi amigo que se lea el log de errores.

De todas formas, no soy el primero que se topa con este problema. Aqui tienes un ejemplo. Parece ser que en Safari solo se puede poner la instrucción en forma de String, y eso provoca la pérdida de los parámetros (a no ser que sean variables globales, que ya he dicho que no quiero).

Saludos.
  #4 (permalink)  
Antiguo 30/05/2008, 17:01
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Safari & SetTimeOut

Sí, he visto otros casos, pero son de hace más de 2 años, como el que pones. Por eso preguntaba lo de la versión de Safari.
Y Mozilla no siempre ofrece sólo el estándar. A veces ofrece el estándar y luego más cosas. [1].

Por lo demás, si quieres comenta un poco dónde están definidas callback, elem y contenido y quizá se me ocurra algo (probablemente no).
  #5 (permalink)  
Antiguo 31/05/2008, 08:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Safari & SetTimeOut

Ok, esto ya funciona. Me curré una especie de Debugger (alert por todos lados, como se hizo toda la vida) y el problema no estaba ahi, era cosa del DOM y XML. Estaba tan seguro de que era culpa de SetTimeOut porque fue lo único que añadí desde la última vez que lo había probado mi amigo.

www.danielr.es/konkeror2 (el diseño es penoso, aún no me he puesto con CSS, pero me he currado una mini-librería de AJAX y manejo de XML ya). Espero hacer avances pronto y mantenerlo compatible con todos los navegadores.

Muchas gracias, y perdonad por la pérdida de tiempo, ya que al final el error era otro xD.

Saludos.
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 03:55.