Se chiamo una funzione flash contemporaneamente a un collegamento href, la funzione flash verrà sempre eseguita?

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

Domanda

Ho il seguente codice in page1.php:

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

Questo chiama una funzione in un filmato Flash su page1.php e apre page2.php.

La mia domanda è questa:

Posso essere sicuro che la funzione flash sarà sempre chiamata e finirà l'esecuzione prima che sia chiamato page2.php? (La funzione flash in realtà salva alcuni dati in un oggetto condiviso locale).

O dovrei aggiungere un po 'di codice alla funzione flash su getURL (" page2.php "); quando ha finito.

qualsiasi pensiero applausi

È stato utile?

Soluzione

Se hai sicuramente bisogno che la pagina si apra al termine della funzione flash, l'unico modo per garantire che sia reindirizzare dalla funzione flash come hai già immaginato.

Altri suggerimenti

Prima di tutto non includere " javascript: " pseudo protocollo nell'attributo onclick .

Prova a utilizzare onclick = " return callFlash () " - in questo modo, il browser deve attendere il completamento della funzione JS prima di seguire il collegamento. Non conosco il metodo che stai usando per chiamare le funzioni AS, ma se è sincrono (cioè può restituire dati a JS senza usare callback o qualcosa del genere), allora la funzione AS finirà prima della funzione JS e prima di ricaricare la pagina. Quindi questo dovrebbe essere sicuro.

La risposta alla domanda è no.

Esiste una soluzione semplice. Basta interrompere la propagazione dell'evento click e lasciare che flash esegua il reindirizzamento:

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

il 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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top