印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Windows XHTML でフラッシュを表示するには

フラッシュを埋め込む object 要素について調べる。XHTML Valid で,IE でも Firefox でも表示が可能なように書くことができる。

■ ■ ■

先の記事 nlog(n): CamStudio のバグ がきっかけで,object 要素について調べてみることにした。object タグの中には embed タグが書かれたものが多いが,embed タグは XHTML では定義されていないのだ。

HTML を XHTML としての機能を持つように書き換えるにはどうすればいいのか。一般的な書き換えのための要点は次の通り (XHTMLの書き方と留意点)。

  1. 全てのタグ(要素タイプ名,属性名)は小文字で記述する
  2. 属性の値は必ず引用符で囲む
  3. 終了タグを省略しない
  4. 空要素のタグは /> で閉じる
  5. ファイル内の位置を示すにはid属性を併記する
  6. & はあらゆるところで & と記述する
  7. 属性の省略書式は使わない
  8. スクリプトやスタイルシートは head 要素内ではなく,外部ファイルに記述する
  9. 言語コードの指定には xml:lang 属性と lang 属性を併記する

nlog(n): CamStudio のバグ の HTML は,項目 1, 2, 4 を使って書き換えることができる。しかし,最大の問題は,embed 要素はブラウザの独自仕様であり,XHTML では定義されていないということである(XHTML規格に準じて、フラッシュコンテンツを埋め込むには)。embed 要素は,object 要素でフラッシュが表示できなかった場合の代替として働く。つまり,object 要素がきちんと記述されていれば,embed は必要ないのだ。この embed の位置には object が機能しないブラウザのための代替要素を書くことができる。というよりも,embed 自体が代替要素である訳だ。object はインライン要素なので,<p>〜</p> で囲む必要がある。

XHTML Valid にするためには,単に embed タグを削除するだけでよいのだが,そうすると Firefox 2.0 などの Mozilla 系では表示ができなくなってしまう。object タグの中に codebase 属性が書かれているからだ。IE でも Firefox でも表示できるようにするためには,object タグの中に書く属性を次のものだけにする。

  1. type
  2. data
  3. width, height
  4. id

id 属性の値は数字から始めてはいけないのだそうだ。XHTML Valid で,IE 6.0 でも Firefox 2.0 でも表示できるようにしたコードは次の通り。Another HTML-lint gateway でも100点である。

<object type="application/x-shockwave-flash"
 data="4balls.swf"
 width="324" height="331" id="fourballs.swf" >
 <param name="movie" value="4balls.swf" />
 <param name="quality" value="high" />
 <param name="bgcolor" value="#FFFFFF" />
 <p>This content requires the <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&amp;promoid=BIOW">Adobe Flash Player</a>.</p>
</object>

object タグ内の data 属性や,<param name="movie" value="〜" /> の値としては,絶対パスや URL が使える。フラッシュのファイルが別ディレクトリや別サイトにある場合は,URL で data="http://nlogn.ath.cx/archives/200702/4balls.swf" などと書いてしまった方がよい。

<param name="movie" value="4balls.swf" /> の行は,IE だけが必要なもので,一般的には不要なものである。逆に,codebase を削除してしまったことで,IE で可能な自動インストールができなくなっている。この問題を,条件付コメントによって解決する方法が How to correctly insert a Flash into XHTML » La Trine で紹介されている。

<!--[if !IE]> -->
<object type="application/x-shockwave-flash"
 data="4balls.swf"
 width="324" height="331" id="fourballs.swf" >
<!-- <![endif]-->
<!--[if IE]>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 width="324" height="331" id="fourballs.swf" >
 <param name="movie" value="4balls.swf" />
<!--><!---->
 <param name="quality" value="high" />
 <param name="bgcolor" value="#FFFFFF" />
 <p>This content requires the <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&amp;promoid=BIOW">Adobe Flash Player</a>.</p>
</object>
<!-- <![endif]-->

「コメントの入れ子はダメよ」ということで,HTML-lint では100点でなくなってしまうのだが,XHTML としては Valid で,IE の嬉しい機能も動作するとのこと。

Posted by n at 2007-02-24 03:08 | Edit | Comments (0) | Trackback(1)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
ValidなXHTMLソースのためのチェックポイント(087)
直すところは、どんなサイトでも大体同じなので、主な修正点をまとめてみました。 Trackbacked from: thousand scales:とむのレポートサイト at April 21, 2008 20:04
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?