ExternalInterfaceだけでJSを呼び出すことってできるのね

ExternalInterfaceって匿名関数とかいけるのかなと思って試してみたら案の定いけちゃった。
これって、HTMLや外部JSファイルなどに定義する必要がなくなるって考えられるから素敵。将来のコンテナ拡張はあれだけど・・・。

Flash側でこんなカンジで記述。

import flash.external.*;
var js:String =  "function(){alert('Hello World!');}";
ExternalInterface.call(js);
たしかにアラートが表示されるっ・・・!!
今のところFirefoxとIEで動作確認済み。

すごい昔に同じような手法で、Flash側からコンテナHTMLのテキストを隠すというSEOをやったことがあって、それはJavaScriptのコードもFlashのフレームアクションに文字列として定義してgetURLで実行という手法だったんだけど、ExternalInterfaceでも問題なくいけるのね。

ブラウザの挙動全部見てないからクラスパッケージ化するかは微妙だけど、Firefox2の日本語パス問題の解決に使えそうだなコレ。

Trackbacks

Trackback URL: http://blog.naggg.jp/mt/mt-tb.cgi/46

Send Your Comment