« ExternalInterfaceにハマる | メイン | ダンプしたSQLを早くリストアする方法 »

【解決!】ExternalInterfaceにハマる

わかったぞぉぉぉっぉおおぉおお!!!!

やぁあああっとわかった。原因が。

ExternalInterfaceにハマるにて、Firefoxのみ、ExternalInterface.callbackで登録した関数をコールできない原因(not a function になる)が。

HTML,JavaScriptの編集は、Dreamweaver8で行っている。
当然、swfを挿入すると、IEのクリックしないとアクティブにならないやつに対処するための、AC_FL_RunContent()というのが、自動的に挿入される。つまり、Objectタグ、embedタグを動的に出力して、それを回避するのである。

ExternalInterfaceを動かす場合、html中に挿入したswfに対して、
objectには、idを、embedにはname属性を付け、その名前を用いて、swf中の関数にアクセスする。例えば、

thisMovie('fla').fla_func();

(※thisMovieについては、このあたりを参照されたし)

で、AC_FL_RunContentを使うと、

<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" name="fla" width="200" height="200" id="fla" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" > <param name="movie" value="example.swf" /> <param name="loop" value="false" /> <param name="quality" value="high" /> <embed name="fla" width="200" height="200" id="fla" src="example.swf" loop="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" ></embed> </object>

といったコードが生成される。
これがガンだったのだ。(※noscriptの中も同様)

AC_FL_RunContentでは、objectタグに、idとnameの両方が設定されてしまい、これがFirefoxでは問題となるようだ。

FIrefoxにおいては、objectタグには、idを。embedタグにはnameをだけを設定しなければならないようだ。(IE,Safariでは重複していてもOK)


ならば、AC_FL_RunContentを使わなければいいのか?といえば、object/embedを動的に出力しないとIEでswfがクリックされるまでアクティブにならないという問題を回避できない。

解決策としては、
1)AC_RunActiveContent.jsを改造し、objectにはidを、embedにはnameを出力するようにする。
2)AC_FL_RunContentの代わりにSWFObjectを使う。

SWFObjectはAC_RunContentより高機能だけれど、いちいちコードを書くのが面倒だしなぁ。。
AC_RunContentで足りてるっちゃ足りてるので、こちらを修正する方向で考えよう。

参考サイト
にゃあプロジェクト - ウェブログ - ExternalInterfaceを使ってみる (3)
Adobe - デベロッパーセンター : 外部APIを使用したFlashとJavaScriptの接続
第35回 FlashムービーとJavaScriptを連携させてみよう:ITpro

トラックバック

このエントリーのトラックバックURL:
http://www.ironhearts.com/diary/mt-tb-ih.cgi/780

コメントを投稿

2008年10月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

最近のコメント

小優 on 日々の記録: DELL4600Cで
よしぞう on 日々の記録: 4600C 表記の対
よしぞう on 日々の記録: 4600C 表記の対
on MySQL後で調べるメモ: DB接続後 目的のS
on 日々の記録: 「無くなった留め具」
on JavaScriptでクロスドメイン: >しかし、こういう小
junp on iMovieで静止画を取り込むと荒い: すいません困ってます
う〜ん・・・ on 素朴な疑問: にょうをした、きたな
困ってました on ATOKとIME2005が勝手に切り替わる問題: 何故か勝手に切り替わ
go on 日々の記録: 4600C、同じ症状

アーカイブ