今制作中のサイトで少し変わったナビゲーションを実現させるために、ActionScriptからJavaScriptをのFunctionを呼び出したり、逆にJavaScriptからActionScriptのFunctionを呼びだすというような処理を多用するものを作っています。
それを実現するためにはActionScriptのExternalInterfaceを使うのですが、それでかなりハマってネットで検索しても同様の情報がなかったのでメモしておきます。
症状
以下のようなコードで、Flash Playerのバージョン9.0.48以前+IE 6/7の組み合わせの場合のみ、SWFを配置しただけでJavaScriptエラーが発生してExternalInterfaceの機能が全く動かなくなります。
ActionScript(2.0)例
//TextFieldを作る
var greetingText:TextField = this.createTextField("greeting",this.getNextHighestDepth(),0,0,100,100);
//JavaScriptから呼びだしてTextFieldの内容を変える
function changeText(t:String) {
greetingText:TextField.text = t;
}
//ActionScriptのFunctionをJavaScriptから呼びだせるように登録
ExternalInterface.addCallback("extChangeText", null, changeText);