私は、Javascript から Flash への双方向の通信を行うアプリに取り組んでいます。これは、ある程度まではうまく機能します。
フラッシュは、wmode = window を指定した swfObject を使用して埋め込まれます。これは、パフォーマンスの目的で行う必要があります。ただし、これは、FB.init 内で hideFlashCallback を使用する必要があることを意味します。これは、Facebook ダイアログまたはチャット ウィンドウが開いているときにアプリの一時停止を処理するためです。
問題は、(Internet Explorer のみ) ダイアログ ウィンドウなどを閉じて、hideFlashCallback を使用してフラッシュを再度表示した後、Javascript からフラッシュに通信できなくなることです。
私が通信に使用しているコードは次のとおりです。
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
getFlashMovie("swfContainer2").sendToActionscript(value);
私はこれを何時間も調べてきましたが、これが起こる理由がわかりません。IE9 では、window[movieName] の代わりに document[movieName] を使用する必要があることはわかっていますが、それでも問題は解決しません。私が言うように、hideFlashCallback まではすべて正常に動作しています。
何らかの理由で document[movieName] が Flash オブジェクトを見つけられないようです。Flash オブジェクトは明らかにページ上にあります。
これが機能しない理由と解決方法についてのアイデアは大歓迎です!