Tengo el siguiente código en page1.php:

<a href="page2.php" onClick="javascript:callFlash();">Go to page</a>

Esto llama a una función en una película Flash en la página1.php y abre page2.php.

Mi pregunta es esta:

¿Puedo estar seguro de que siempre se llamará a la función flash y finalizaré la ejecución antes de que se llame a page2.php? (La función flash en realidad guarda algunos datos en un objeto local compartido).

O debería agregar un poco de código a la función flash a getURL("page2.php"); cuando esté listo.

Cualquier pensamiento aplausos

0
undefined 17 jun. 2009 a las 18:37

3 respuestas

La mejor respuesta

Si definitivamente necesita que la página se abra después de que se realiza la función de flash, entonces la única forma de garantizar eso es redirigir desde la función de flash como ya se imaginó.

2
Jason Miesionczek 17 jun. 2009 a las 14:39

En primer lugar, no incluya el pseudo protocolo "javascript:" en el atributo onclick.

Intente usar onclick="return callFlash()": de esta manera, el navegador debe esperar a que finalice la función JS antes de seguir el enlace. No sé el método que está utilizando para llamar a las funciones AS, pero si es sincrónico (es decir, puede devolver datos a JS sin usar devoluciones de llamada o algo así), entonces la función AS finalizará antes de la función JS , y antes de recargar la página. Entonces esto debería ser seguro.

2
Maciej Łebkowski 17 jun. 2009 a las 14:47

La respuesta a la pregunta es no.

Hay una solución fácil. Simplemente detenga la propagación del evento de clic y deje que Flash realice la redirección:

<a href="page2.php" onClick="stop_and_call(event);"/>

La javascript:

function stop_and_call(e)
{
    if (!!(window.attachEvent && !window.opera)){
        // this is IE
        e.returnValue = false;
        e.cancelBubble = true;
    } else {
        e.preventDefault();
        e.stopPropagation();
    }
    e.stopped = true;
    callFlash();
}
0
Pierre Spring 17 jun. 2009 a las 14:55