Si j'appelle une fonction flash en même temps qu'un lien href, la fonction flash sera-t-elle toujours exécutée?

StackOverflow https://stackoverflow.com/questions/1007451

Question

J'ai le code suivant dans la page1.php:

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

Ceci appelle une fonction dans une animation Flash à la page1.php et ouvre la page2.php.

Ma question est la suivante:

Puis-je être sûr que la fonction flash sera toujours appelée et finira de s'exécuter avant l'appel de page2.php? (La fonction flash enregistre certaines données sur un objet partagé local.)

Ou devrais-je ajouter un peu de code à la fonction flash dans getURL ("page2.php"); lorsque vous avez terminé.

des pensées acclamations

Était-ce utile?

La solution

Si vous avez absolument besoin que la page s'ouvre après la fin de la fonction flash, le seul moyen de vous en assurer est de rediriger la fonction flash de la manière dont vous avez déjà pensé.

Autres conseils

Tout d’abord, n’incluez pas " javascript: " pseudo protocole dans l'attribut onclick .

Essayez d’utiliser onclick = & return; callFlash () " . Ainsi, le navigateur doit attendre que la fonction JS se termine avant de suivre le lien. Je ne connais pas la méthode que vous utilisez pour appeler des fonctions AS, mais si elle est synchrone (c.-à-d. Qu'elle peut renvoyer des données à JS sans utiliser de callbacks ou autre), la fonction AS se terminera avant la fonction JS et avant le rechargement de la page. Cela devrait donc être sûr.

La réponse à la question est non.

Il existe une solution de contournement facile. Arrêtez simplement la propagation de l'événement click et laissez Flash faire la redirection:

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

le 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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top