swfobject.js を使って Flash と代替画像を切り替える方法
バナー配信とかでよくあるアレです。flash が使える環境の場合には Flash で広告を配信して Flash が使えない環境の場合には画像を表示するってヤツです。
Flash まわりにあまり詳しくない僕のところにそんな要望が来ました。
ちょっと調べてみたら、やっぱりライブラリが存在していました! ヽ(^A^ )ノ ラッキー☆
Embedding Adobe Flash Player content using SWFObject 2 ってライブラリです。GoogleCode 上で公開されています。
さらに嬉しいことに、「SWFObject v2.0 ドキュメント日本語訳 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ」で日本語訳が公開されていますので、英語が苦手な方でも安心ドキュメント。※最新のドキュメントより若干古いような気がするけど・・・
さて、お題目の swfobject.js を使って Flash と代替画像を切り替える方法についてです。
サンプルコード
<script type="text/javascript" src="swfobject.js"></script> <div id="flash_test01"> <img src="banner01.jpg"> </div> <script type="text/javascript"> swfobject.embedSWF("test.swf", "flash_test01", "300", "120", "19.0.0"); </script>
- まず初めに swfobject.js を読み込みます。
- 代替画像を div で囲んで id を定義します。
- swfobject.embedSWF メソッドを使って動的に Flash の embed タグを生成します。
swfobject.embedSWF("swf ファイルのパス", "div で定義した id", "横幅", "縦幅", "flashのバージョン"); と指定します。
Flash のバージョンも指定可能なので、特定のバージョン以下の場合に別コンテンツを表示。なんてことにも応用可能です。
表示テスト1(Flashのバージョンを 9.0.0 と指定しているので、ほとんどの環境で Flash が表示されるはず。)
表示テスト2(Flashのバージョンを 12.0.0 と指定しているので、代替画像が表示されているはず。)
いやぁ〜実に便利です。というか、長ったらしい object タグと embed タグを書くよりも遙かに便利です。
JavaScript が無効化されていると動作しませんが、今時いいでしょ・・・と思ったら、その考え方は、SWFObject 1.5 まででお終い。SWFObject 2.0 では対応策がサポートされているみたいですね。swfobject_2_1.zip の中に入っている index.html が 2.0 書式版で index_dynamic.html が 1.5 書式版のようです。
という問題を解決するために登場したようです。まぁ JavaScript をオフにするのはユーザーの意識的な行動によるものなので、そこは諦めてもいいだろとは思ったりもしますが、そこもサポートしたのが、「v2.0のオプション1」です。で、旧来のv1.5的な埋め込み方が「v2.0のオプション2(別名:v2.0のダイナミックエンベッド)」というわけです。
まぁ〜ぶっちゃけ 1.5 版の書式の方が使いやすいですわ。
より詳しい最新情報が必要な方は、やはりオリジナルドキュメントの
documentation - swfobject - Embedding Adobe Flash Player content using SWFObject 2 - Google Code
を読みましょう!
What is SWFObject?
Why should you use SWFObject?
Why does SWFObject use JavaScript?
Should I use the static or dynamic publishing method?
辺りは日本語訳と結構差分ができているので、読んでおいた方が良いと思われます。
最後に何ですけど SWFObject 2.0 は MIT License なので使ってるよーって明記が必要です。
licenses/MIT_license - Open Source Group Japan Wiki から MIT ライセンスの定義を引用
上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
コメントやシェアをお願いします!
aaa
flashのバージョン"19.0.0"は"9.0.0"の間違い?
drk
>丹村さん
このページのソースをご覧いただくと参考になるかと思いますが、swfobject.js を任意の箇所(できれば /HEAD の前が良いでしょう)に設置した後は、flash を表示させたい位置で、コードを記述すれば動作するかと思います。
丹村 和生
お忙しいところ失礼致します。
このたびご連絡させていただきましたのは、
フラッシュの代替画像の方法がわからず
アドバイスいただけたらと思いご連絡いたしました。
御社様サイト掲載のサンプルコードを拝見させていただきましたが
<div>
<img src="banner01.jpg">
</img></div>
swfobject.embedSWF("test.swf", "flash_test01", "300", "120", "19.0.0");
をどの位置に配置すればよいのかがわからず、宜しければアドバイス
いただけませんでしょうか?
当社のフラッシュ掲載ページ
http://www.omc-plus.com/
の上部部分です。
そして、代替画像が ryoumatop1.jpg 縦350×横870です
お忙しいとは思いますが、宜しくお願い致します。