【備忘録】Flash-ExternalInterfaceがIEでエラー
ハマったので、備忘録。
Flashをdocument.writeじゃなくてinnerHTMLでインサートする場合に、
ExternalInterface.addCallbackを使ってJS→ASをしようとすると、
IEで「オブジェクトでサポートされていないプロパティ...」ってエラーが返ってきます。
最初はobjectタグとembedのとIDの重複やら、プロパティやらを疑って色々やってみるも不発。
でも通常のサンプルは動くみたいなので、原因を追求していく。
で、限定された部分がdocument.writeかinnerHTMLか。
"externalInterface innerHTML"でググって、答え発見。
下記を参照しました。
jiroの日記 ■[ActionScript][JavaScript]ExternalInterfaceのまとめ
スクリプトで動的に要素を追加する場合には注意が必要
例えばobjectタグのコンテナであるdivタグを生成した直後にobjectタグを追加すると動作しないdivタグを生成して、DOMツリーに登録されてから処理しないといけない
例えば下のようなかんじでinnerHTMLへの代入は遅延させなければいけない。ちなみにsetTimeoutすれば、必ずbodyにdivタグが追加されたあとにinnerHTMLが実行される
前にもinnerHTMLでスクリプト動かないので悩んだので、これでスッキリしました。
sukesamさん、ありがとうございます!
最近DOMDOMDOMDOMしてるけど、ブラウザ毎の判別やら対処がめんどくせえっす。
統一しておくれ(;´_ゝ`)