IFRAME を使わずページをロードする(3)
IFRAME を使わずページをロードする(2) - Tosshi Noteの続き、今回は SWF 内からリンクをたたくとき。ExternalInterface を使って Flash 内から JavaScript を呼び出してみる。
試してみると問題が…、SWF があるページ自体を切り替えると Safari で固まった。IE6 では不正終了してしまった。
関数の戻りが動かないためと思われる。戻り処理時に既にそのSWFをアンロードしようとしているから。ということで、setTimeout で非同期処理にして回避しました。
private function openlink():void { if (ExternalInterface.available) { ExternalInterface.call("loadContentFromSwf", "test.html"); } }
JScript では setTimeoutでハンドルする関数の引数を渡す方法を変えないといけない。
function loadContentFromSwf(url) { if (document.all) { setTimeout('loadContent("'+url+'")', 600); } else { setTimeout(loadContent, 600, url); } }