2 getURL seguidos en IE ¬¬
Igual es un bug de estos que conoce todo el mundo por lo básico que es, pero yo no lo conocía. Bueno, por razones que no vienen al caso, tenía que hacer dos llamadas seguidas a JavaScript desde Flash. Y además no podía utilizar ExternalInterface porque el player tiene que ser 6.
Símplemente prueba esto:
getURL("javascript:alert('uno');");
getURL("javascript:alert('dos');");
En FF llegan las 2 llamadas, en IE, NO. Sólo llega la segunda. Buscando una forma de solucionarlo, fuimos a la chapuza de retrasar la segunda llamada con setInterval. En la pruebas que hicimos un intervalo de 200 milisegundos es suficiente. He de decir que no es algo que recomiende, yo creo que no es estable 100%.
Y como el parche no es estable 100%, nos pasamos a ExternalInterface y lo solucionamos. Pero me guardo para la próxima una prueba de concepto de uso “intensivo” de ExternalInterface que, otra vez, funciona en FF correctamente pero no en IE.
La alegre vida del programador Flash.
pd: no es un problema específico de alert porque interrumpa el flujo de JS o algo así. He probado llamando a una función “normal” y tampoco resulta. Tampoco creo que la version de IE o del player cambie el resultado.
February 16th, 2007 at 9:54 am
Valorasteis la opción de crear una función JS que sirva como puente a otras 2, es decir:
miFuncion1(param1:String)
miFuncion2(param2:Number)
miFuncionPuente(param1:String, param2:Number) {
miFuncion1(param1)
miFuncion2(param2)
}
Sigue siendo una chapu pero a mi lo del setInterval me daría mucho miedo.
Volviendo al tema del ExternalInterface a mi me paso en un proyecto, en el cual se creaba un menu en flash a partir de un xml de estructura de tal forma que una vez creado evaluase su altura en px y se la pasase al HTML para que redimensionara el div que lo contenía, el caso es que haciendo la llamada mediante “javascript:” se redimensionaba bien pero cortaba la descarga de otros elementos definidos en el HTML, vamo que si un jpg se había cargado a la mitad en el momento de la llamada, ahí se quedaba, a la mitad. Y se solucionó, como no, utilizando ExternalInterface (además te ahorras un “click” molesto en IE).
February 18th, 2007 at 10:03 pm
Jeje, la verdad es que el setInterval da mucho miedo, por eso al final no ha durado mucho. La solución de la función puente también me gusta.
pd: el “click” de IE es lo peor que se ha inventado nunca… ¿lo han quitado en IE7?
March 19th, 2007 at 10:01 pm
Puedes usar lo siguiente:
getURL(”javascript:alert(’uno’);alert(’dos’)”);