hrefリンクと同時にフラッシュ関数を呼び出すと、フラッシュ関数は常に実行されますか?

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

質問

page1.phpに次のコードがあります:

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

これにより、page1.phpのFlashムービーの関数が呼び出され、 page2.phpが開きます。

私の質問はこれです:

フラッシュ関数が常に呼び出され、page2.phpが呼び出される前に実行が終了することを確認できますか? (フラッシュ機能は、実際にローカル共有オブジェクトにデータを保存します。)

または、完了したら getURL(&quot; page2.php&quot;); のフラッシュ関数に少しコードを追加する必要があります。

考え 乾杯

役に立ちましたか?

解決

フラッシュ機能の実行後にページを開く必要がある場合、それを保証する唯一の方法は、既に考えたとおりにフラッシュ機能からリダイレクトすることです。

他のヒント

まず、&quot; javascript:&quot;を含めないでください。 onclick 属性の擬似プロトコル。

onclick =&quot; return callFlash()&quot; &#8212;を使用してみてください。この方法では、ブラウザはリンクをたどる前にJS関数が終了するのを待つ必要があります。 AS関数の呼び出しに使用しているメソッドがわかりませんが、同期(つまり、コールバックなどを使用せずにデータをJSに返すことができる)の場合、AS関数は JS関数の前、およびページのリロードの前に終了します。これは安全なはずです。

質問に対する答えはノーです。

簡単な回避策があります。クリックイベントの伝播を停止し、フラッシュにリダイレクトを実行させるだけです。

<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();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top