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.

Educa al friki

3 Responses to “2 getURL seguidos en IE ¬¬”

  1. elSuricatoRojo Says:

    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).

  2. Zárate Says:

    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?

  3. Carolina Says:

    Puedes usar lo siguiente:

    getURL(”javascript:alert(’uno’);alert(’dos’)”);

Leave a Reply