1.埋め込みは違法です
<embed> タグは Netscape のプライベートタグです。 <embed> タグは HTML3.2、HTML4.0 から XHTML1.0 まで広く使用されていますが、W3C にはこのタグが含まれていません。 <embed> タグを使用しているページは、W3C 検証に合格しません。
2. オブジェクトを使用する必要があります
W3C は <object> タグを推奨しています。 XHTML2 でも <img> は <object> に置き換えられます。 <object> メソッドを使用してフラッシュを挿入するコードは次のとおりです。
引用した内容は以下の通りです。 <object type="application/x-shockwave-flash" data="test.swf" width="200" height="100"> <parm name="movie" value="test.swf /> </object> |
ただし、この方法はIE5~IE6/Winでは正しく表示できません(連続再生不可、ダウンロードするまで再生できません)が、それ以下のバージョンでは正しく表示できます。その後、小さいフラッシュファイルを調整してから大きいフラッシュファイルを埋め込む方法で連続再生の問題は解決しましたが、IE5以降では依然としてフラッシュが表示できない場合があります。
3. 現在の暫定措置
では、標準に準拠するだけでなく、すべてのブラウザで Flash を正しく表示するにはどうすればよいでしょうか?マクロメディア Web サイトはどのようにして W3c 検証に合格しますか?
一部のデザイナーは、JavaScript を使用して不正な <embed> タグを非表示にすることを考えました。
引用した内容は以下の通りです。 <script type="text/javascript "> if (navegiator . mimeTypes && navigator . mimeTypes["application/x-shockwave-flash"] { document . write('<embed src="test . swf" ... |
現在のところ、これはより良い解決策です。 Flash を挿入し、js を使用してそれを呼び出す必要があります。この方法では、W3C 検証プログラムを欺き、ページを検証に合格させることができます。しかし、それは単なる「不正行為」であり、実際には基準を満たしていません。
マクロメディアはどのようにそれを行うのでしょうか? 次のコードを参照してください。
引用した内容は以下の通りです。 <!-- $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : ブラウザの受け入れヘッダーは、Flash 6,0,65,0 以降を使用していることを示しているため、この Flash 6 ムービーには問題ありません。来る --> |
妥協的なアプローチを採用しています。
(1) まず、JavaScript がブラウザのバージョンと Flash Player のバージョンを決定します。
(2). 異なるバージョンに応じて、バックグラウンドで HTML コードを動的に生成します。
簡単に言うと、ブラウザがオブジェクトの MIME タイプ「application/x-shockwave-flash」を処理できない場合、デフォルトで <object> メソッドが使用され、子要素 <embed> が挿入されます。端的に言えば、これも js を使って <embed> を隠すのと同じようなものですが、現時点でできる最も標準的で完璧な方法です。
本当に <embed> を放棄したい場合は、IE ブラウザが <object> をより適切にサポートするようになるまで、おそらく Longhorn が登場するまで待つしかありません。