今更感漂うW3Cに怒られないFlashの表示ソースについて。
マクパペットいじってた時に思い出したのでメモっておきます。

DreamweaverとかでFlashオブジェクトを挿入すると、大体こんなソースですが

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="32" height="32" title="title">
  <param name="movie" value="index.swf" />
  <param name="quality" value="high" />
  <embed src="index.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="32" height="32"></embed>
</object>

これでチェックすると「there is no attribute “width”」だとか「there is no attribute “flashvars”」みたいにエラーが出てしまう。

最新のCS3では対応されてるかもしれないが、未だ旧バージョンを使用してる場合に、
Flash挿入したときバリデータでエラーを出さないようにするためには次のように修正する。

1.embedタグを消す

embedはXHTMLでは使えないタグなので削除

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="32" height="32" title="title">
  <param name="movie" value="index.swf" />
  <param name="quality" value="high" />
</object>

2.classid要素を削除しtype要素に変更

MIME typeを指定するtype=”application/x-shockwave-flash”を追加する

<object type="application/x-shockwave-flash" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="32" height="32" title="title">
  <param name="movie" value="index.swf" />
  <param name="quality" value="high" />
</object>

3.codebase消してdataを追加。

codebaseはflashのセキュリティで動かないことがあるのでつけててもあまり意味がないらしい。
最後data属性にmovieのvalueと同じFlashへのパスを追加しないと表示されないので注意。

<object type="application/x-shockwave-flash" width="32" height="32" title="title" data="index.swf">
  <param name="movie" value="index.swf" />
  <param name="quality" value="high" />
</object>

以上でValidなFlashが表示されるはず。

ValidなYouTube表示ソース

ようつべの貼り付け用ソースはそのままコピペすると次のような感じだと思います。

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/hogehoge&hl=ja&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hogehoge&hl=ja&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

これをValidに修正する為には上記ステップ3を踏まえ以下の手順で変更すればOKです。

  1. embedタグのsrc属性をdata属性に変更してobjectタグへ移す
  2. embedタグのtype属性をobjectタグへ移す
  3. objectタグへtitle属性を追加する
  4. <param></param>を<param />に変更
  5. embedタグを消す

以下は上のサンプルソースを修正したもの。

<object width="425" height="344" title="YOUTUBEサンプル" data="http://www.youtube.com/v/hogehoge&hl=ja&fs=1&" type="application/x-shockwave-flash"><param name="movie" value="http://www.youtube.com/v/hogehoge&hl=ja&fs=1&" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /></object>

2009-08-17 追加