SWFobjectを使用する際の代替コンテンツ

2ヵ月後の追加コンテンツ発売のために、再びダークソウルをやり始めたアライです。
盾で敵の攻撃を弾いてその隙に致命の一撃をお見舞いするパリィが楽しいです。

つい先日、入社して以来初めてのFlash案件を担当しました。
Flashコンテンツを埋め込む場合、大抵SWFobjectを使うと思うのですが、
自分の中の当たり前と、他の人の認識にズレがあったので、そのことをメモ書きしておこうと思います。

コーディング方法は二通り

FlashはJSを使わなくてもHTMLに埋め込めますが、何故SWFobjectを使うのかというと以下の2点が思い浮かびます。

  • アクティブコンテンツの利用許可がどうのというダイアログが表示されてうざったい
  • Flash内にボタンがある場合、それをクリックするとフォーカスが移ってうざったい

JSでうまいことFlashを埋め込めば上記2点の問題が解決できるので、Flash埋め込みライブラリが使われるようになったと認識しています。

その場合、もしかするとFlash Playerプラグインをインストールしていない人(僕)やJSをOFFにしている人がいるかもしれません。そういう少数派の人にもどういうコンテンツが表示されるはずなのか、ある程度知らせてあげるためにも代替コンテンツの対応は必須だと考えています。
SWFobjectを使う場合、代替コンテンツに対応した書き方は以下のようになります。

<div id="flash">
	[代替コンテンツの中身]
</div>

SWFobject1.5までは上記のようなコーディングしか方法が無く、SWFobjectを使う場合はJSをOFFにしたらFlashが観られませんでした。
その問題点を解決したのがSWFobject2.0で下記のような書き方をすればFlash PlayerプラグインがインストールされていればFlashを表示することができます。

<object id="flash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="[横幅]" height="[高さ]">
    <param name="movie" value="[Flashのパス]">
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="[Flashのパス]" width="[横幅]" height="[高さ]">
    <!--<![endif]-->
        [代替コンテンツの中身]
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

JSがOFFになっている場合、object要素でFlashを表示することになります。
となると、先ほど挙げた2点などHTMLの要素だけでFlashを表示させた際の問題が出てきそうですが…
モダンブラウザなら何の問題もありません。
IE9でも面倒なダイアログやフォーカスの線は出ませんでした。(IE8以下は未確認で7以下は出るハズ…)

ブラウザによって起こる、不都合はほとんど無いと言っていい状態になっているので、基本的にobject要素を用いたコーディングでいいのではないかと思っています。
(よく考えると、Flash側でJSを使う場合もあるので、Flashクリエイターと相談はしておいた方が良さそうです…)