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