2009-06-17 20 views
0

私はpage1.phpに次のコードを持っている:hrefリンクと同時にフラッシュ関数を呼び出すと、フラッシュ関数は常に実行されますか?

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

これはpage1.php page2.phpを開き、上のFlashムービー内の関数を呼び出します。

私の質問はこれです:

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

また、フラッシュ機能にコードを追加する必要があります(getURL("page2.php");)。

歓声

答えて

2

任意の考えあなたは間違いなくフラッシュ機能が行われた後に開くようにページが必要な場合は、そのことを保証する唯一の方法は、あなたがすでに考え出しとしてフラッシュ機能からリダイレクトすることです。

2

まず、onclick属性に「javascript:」疑似プロトコルを含めないでください。

onclick="return callFlash()"を試してみてください。この方法では、ブラウザはリンクをたどる前にJS関数が完了するのを待たなければなりません。私はAS関数を呼び出すためのメソッドを知っていませんが、それは同期(すなわち、コールバックや何かを使わずにJSにデータを返すことができる)の場合、AS関数 JS関数の前に完了し、 。だからこれは安全なはずです。

0

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

簡単な回避策があります。単にクリックイベントの伝播を停止し、フラッシュがリダイレクトしましょう:

<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(); 
} 
関連する問題