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対策っぽい感じがして嫌なんだけどもね ![]()
- 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
まだ登録されていません。