Web Tech Log by 1KB

Icon

Web開発、Webデザイン、SEO、携帯コンテンツなどWebにまつわるテクノロジーを追っかけるブログ。旧名「Web屋に復帰した人間のリハビリ日記」

SWFObject を使用してFlashファイルをページに埋め込み、iPhone用に代替画像を表示

先日とある知人からWebに関してに相談されました。

「FlashがiPhoneで表示されなくて困ってる。ページを開くと変なアイコンがでるだけ。なんとかしてほしい」

と。確かiPhoneは現時点ではFlashに対応してない。でも最近はiPhoneを持っている人が町中でもちらほら見かけるので、無視できない存在なんでしょうね。私はiPhoneは持っていませんが、同じブラウザSafariを搭載したiPod touchは持っているので、それで確認してみた。

20090206ipodflash

たしかに変なアイコン出ています。おそらく対応するプラグインは入ってないぞという意味でしょう。

Flashに関しては大昔多少かじった程度であまりくわしくありません。その大昔もFlash2の時代で太古の昔です。でも確かSWFに書き出すときにブラウザが対応していない場合、代替GIF画像を表示するようにオプションがあったような・・・などと思ったんですが、手元にFlashがないので、確認のしようがありません。

いろいろ調べているとSWFObjectというJavascriptライブラリで出会いました。SWFObject はFlashをWebページに埋め込みをするのに便利なJavascriptライブラリで、本家Adobe Flashのアプリケーションが書き出すHTMLコードよりもすっきりきれいなHTMLになったり、Flashプレイヤーのバージョンが検出できたりなどなにかと便利なライブラリです。今回はこれを使ってみました。

Google Codeからダウンロードできます。2009年2月現在の最新バージョンは2.1です。

使い方は簡単で、ほとんどそのまんまサンプルコードのコピペで動きました。

1, ヘッダにてJSの読み込み、swfobject.registerObjectメソッドを追加

<head>タグないでJSファイルの読み込みをおこないます。よくあるパターンですね。まあ<head>タグ以外でもいいんですけど

<script type="text/javascript" src="/js/swfobject.js"></script>
<script type="text/javascript">swfobject.registerObject("title", "9.0.0", "/img/expressInstall.swf");</script>
<!-- 第1引数で実際に表示するHTML内のIDを指定する(title)。第2引数で再生に必要なFlashバージョン。第3引数はexpressInstall.swfのパス-->

expressInstall.swfはFlash Playerのバージョンが、再生に必要なバージョンに満たない場合に自動的に実行され簡単にバージョンアップできるようです。

2, 実際のHTMLの場所にFlashを埋め込み

先ほどswfobject.registerObjectメソッドで指定したID付きの<object>タグを実際Webページ位置に埋め込む

<object id="title" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="750" height="250">
<param name="movie" value="/img/index_title.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="/img/index_title.swf" width="750" height="250">
<!--<![endif]-->
<div><img src="/img/title.gif" width="750" height="250" alt="Title Logo" /></div>
<!-- ↑ここで代替画像を指定する。別に画像でなくてもテキスト等でも可 -->
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>

<object>タグ途中の<div>タグで代替画像を入れます。別に画像でなくてもテキストなどでもかまいません。

まあこんな感じです。アップロードして、再度iPod touchのSafariで確認したところ、きちんと代替GIF画像が表示されてました。

でもiPhone用のFlashプレイヤーは開発中のようなので、じきに代替画像ではなく、きちんとしたムービーが再生できる日が来ると思います。

Category: flash

Tagged: ,

6 Responses

  1. [...] – Web Tech Log by 1KB http://1kb.jp/blog/archives/233 プラグインのインストールを促すのでは無く、代わりの画像を表示。 [...]

  2. TANIMU より:

    初めまして。
    同じ問題に直面して、検索していたらこの記事に辿り着きました。
    すごく参考になりました。
    有り難うございます。

    ただ、MacのブラウザOpera 9.27で確認したところ、Flashが動いていませんでした。
    PCでもiPhoneでも同じページを閲覧させたいので、Operaで上手く見られないとすごく残念です。。。

    何か対策はありますか?

  3. TANIMU より:

    すみません、自己解決しました。

    と入れたらPC版のOperaでも上手く動作しました。

    あと、私はDreamWeaverで編集しているのですが、保存するときに下記のエラーが出ます。

    ===
    このドキュメントには、存在しないSWFオブジェクトを対象とした次のJavaScriptコードが含まれています。このコードを削除しないと、ページをロードしたときにブラウザにJavaScriptエラーが表示される場合があります。DreamWeaverでこのコードの全てのインスタンスを検索しますか? 

    swfobject.registerObject(“FlashID”)
    ===

    これって放置しても良いものでしょうか?

    プレビューしてみてもどのブラウザでもエラーは発生していませんでしたが。

  4. 1kb より:

    TANIMUさん
    ご返信おそくなりました。私は、現在Dream Weaverを使用していないので、よく分かりませんが、ブラウザでエラーが出ていなければ無視して構わないと思います。

  5. TANIMU より:

    ありがとうございます。
    毎回保存の度にエラーが出て若干煩わしいですが(笑)、
    特に問題無いのであれば無視することにします。

Leave a Reply

킹ēǂ݂uOp[c