« 少年ナイフ | メイン | 【解決!】ExternalInterfaceにハマる »

ExternalInterfaceにハマる

Flash8から、標準でJavaScriptとswfが通信するための機能が付いている。

ExternalInterfaceである。
これを使えば、JavaScript中から、swf中のActionScriptの関数をコールしたり、逆に、ActionScriptから、JavaScriptの関数をコールすることができる。

使い方については、ドキュメントがそこそこあるのでここには詳しく書かないけれど、、これが、なぜか変な挙動で、ものすごくハマる。

現象としては、swf中で設定したJavaScript用のコールバック関数が、Firefoxに限って、JavaScriptからコールできないのである。

ネット上で調べた限り、Safari,Firefoxでは動くが、IEでは動かないという症状はたくさんあるが、Firefoxでは動かないというものがない。


IEやSafariでは動いているので、ActionScriptや、JavaScriptには問題ないと思われる。firebugでトレースしてみるも、やはりswfオブジェクトにコールバック関数が登録されてないような挙動である。うーん。分からない。

キャッシュの線かと思ったが、cacheをdisableにしてもダメ。

ActionScript中からのcallback処理は、trueが返ってきてるので、関数の登録は正常に行われてるはず。実際、IEやsafariからはコールできてるし。

なぜ、firefoxだけダメなんだろう。

firefoxに潜在的なバグがあるのか、、、と思いきや、ExternalInterfaceのチュートリアルを掲載してるサイトをfirefoxでアクセスすると、正常に動いている。

うーん。くやしい。どうして3行たらずのコードが動かないのか。


例えば、にゃあプロジェクト - ウェブログ - ExternalInterfaceを使ってみる (3)

は、こちらのfirefoxでアクセスしてもちゃんと動く。

firebugのコンソールで、

swfTarget("externalInterface").setMenu

と入力すると、ちゃんと
function()

と返ってくる。

しかし、こちらで作ったものだと、

swfTarget("externalInterface").setMenu is not a function

と、なるのである。
しかし、IEやsafariではちゃんと動く。謎だ。謎すぎる。なにが違うのか。

まったく分からない。だれかたすけて〜〜!

トラックバック

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

コメントを投稿

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、同じ症状

アーカイブ