ExternalInterfaceがおかしい!?

ExternalInterface.available が、どうもfalseを返さないとダメな場合でもtrueを返してくる場合があるっぽい。 試してみたのはMac/Winともに Flash Player 9 Debugger Version 9.0.124。

適当にこんな感じのテストコードを用意してコンパイル。

// Test.as
package
{
    import flash.display.Sprite;
    import flash.external.ExternalInterface;

    public class Test extends Sprite
    {
        public function Test()
        {
            if (ExternalInterface.available)
            {
                ExternalInterface.call("function () { alert('available!!'); }");
            }
        }
    }
}

これをブラウザにドロップするなりして file:// なアクセスしてみると、 実際には実行出来ないんだけどもvailableはtrueを返してくるので、 結果的に SecurityError なエラー吐いちゃうよ。

とりあえずは Adobeの不具合報告フォーム に投げといた。けども、 対策としては try,catch してあげるのが良いと nium さんと合意。

try
{
    ExternalInterface.call("function () { alert('available!!'); }");
}
catch (e:SecurityError)
{
    // ココでなんかする。
    trace(e.getStackTrace());
}

なんかJavaScriptのIE対策っぽい感じがして嫌なんだけどもね :-P

Posted at: 
2008/07/26 20:33:29
0 Comments
0 TrackBacks
Tags: 
ActionScript
Flash
Trackback: 
http://humming.via-kitchen.com/2008/07/26/is-externalinterface-broken/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment