Если я вызову функцию flash одновременно с ссылкой href, функция flash будет всегда выполняться? - PullRequest
0 голосов
/ 17 июня 2009

У меня есть следующий код в page1.php:

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

Вызывает функцию во флэш-фильме на page1.php и открывает page2.php.

Мой вопрос такой:

Могу ли я быть уверен, что функция flash всегда будет вызываться и завершится до вызова page2.php? (Функция flash фактически сохраняет некоторые данные в локальный общий объект).

Или я должен добавить немного кода к функции флэш-памяти к getURL("page2.php");, когда это будет сделано.

любые мысли веселит

Ответы [ 3 ]

2 голосов
/ 17 июня 2009

Прежде всего, не включайте псевдопротокол "javascript:" в атрибут onclick.

Попробуйте использовать onclick="return callFlash()" - таким образом, браузер должен дождаться завершения функции JS, прежде чем перейти по ссылке. Я не знаю метод, который вы используете для вызова функций AS, но если он синхронный (то есть может возвращать данные в JS без использования обратных вызовов или чего-то еще), то функция AS завершит до выполнения функции JS, и до перезагрузки страницы. Так что это должно быть безопасно.

2 голосов
/ 17 июня 2009

Если вам определенно нужно, чтобы страница открывалась после выполнения функции флэш-памяти, то единственный способ гарантировать это - перенаправление из функции флэш-памяти, как вы уже поняли.

0 голосов
/ 17 июня 2009

Ответ на вопрос - нет.

Существует простой обходной путь. Просто остановите распространение события click и позвольте flash сделать перенаправление:

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

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();
}
...