Safari3でExternalInterfaceる際のBK

as側で

ExternalInterface.addCallback("foo"...)

した場合Safariからは

document["swfid"].foo

でその関数が取れるわけですが、どうもこのオブジェクトをSafariがキャッシュしやがるらしく、二回目以降のロードで

typeof(document["swfid"].foo) == "function"

swfがロードされる前でも真になります。

上記コードでswfのロードチェックを行っていたためはまりました。。

解決法として

ExternalInterface.addCallback("ready", function():Boolean { return true });

とかを作り、typeofチェックに加えて、この関数を実際によんでちゃんとtrueが返って来るまで待つようにしたらOKでした。やれやれ。

by typester / at 2007-12-25T02:28:00 / life · as3 · bk / Comment