∵ Takayoshi Saito ∴ 2013-02-16 ∞ 7'
Adobe公式サイトのFlashディベロッパーセンターには、Flash(SWF)をHTMLに埋め込む方法について次のように解説しています。
この記事は現在も多くの人が参照していて、はてなブックマークなども沢山ついています。記事の趣旨は以下の通りです。
codebase="http:// download.macromedia.com/pub/shockwave/cabs/flash/ swflash.cab#version=6,0,29,0" width="120" height="30">
type="application/x-shockwave-flash" wmode="transparent" width="120" height="30">レガシーコードの例
このレガシーコードは、さまざまな種類やバージョンのWebブラウザで適切にSWFが表示されるようにと、Webクリエイターたちが各Webブラウ ザの機能やW3C勧告への対応度を踏まえて試行錯誤した結果、到達したコードです。レガシーコードの内容を簡単に説明しますと、赤色の部分(1~4行、6 部分)の外側のobjectタグと直下のparamタグがInternet Explorer(IE)用、青色(5行目)のembedタグがIE以外のWebブラウザ用のコードです。
このような2段構えの構造になっている理由は、IE以外のWebブラウザではobjectタグのclassid属性などのサポートが不十分なため、 SWFを表示する際に必要な情報を取得できないからです。そこで、objectタグの内側に、IE以外のWebブラウザ用でもちゃんと解釈できる embedタグを入れ子にして置いているわけです。(X)HTMLの仕様では、解釈できないobjectタグがある場合、そのタグの内側へと代替コンテン ツを求めるようになっています。レガシーコードの場合、IE以外のWebブラウザは外側のobjectタグを解釈できないため、その代わりに内側にある embedタグを解釈しようとします。
広く使われてきたレガシーコードですが、実は以下のような問題点があり、レガシーコードを使い続けた場合、将来的には一部のWebブラウザでSWFを表示できなくなる可能性があるのです。
(X)HTMLの仕様において、embedタグは「deprecated(廃止予定)」とされている。そのため、将来リリースされるWebブラウザでは、embedタグをサポートしなくなる可能性がある。 ** まとめ**
embedタグは廃止予定なので、今後はembedタグに依存したコードは書かないようにしよう。
objectタグのみを使った新しいコードを使うようにしよう。これは、W3Cの仕様に則ったメディアの表示のさせ方なので、今後はこのコードが主流になっていくでしょう。
何と、今までFlashをHTMLに埋め込むのに使われてきたembedタグは廃止予定なので、これからはオーサリングツールが吐くタグではなく、objectタグを使おうという内容です。しかし、このAdobeの記事は間違っており、参照するべきではありません。
この記事は内容は古く、2008年のものです。記事ではembedタグが廃止予定と書かれていますが、最近HTML5で、embed・object両タグを採用することが決定しています。正確には、HTML4でembedは廃止予定にされていたのが、予定のままで廃止されることなく、HTML5では正式採用が決定された形になっています。 したがって、今後将来のブラウザにおいても、embedは廃止されることはなく、embed・objectの両方を書くという(記事でいう)レガシーな書き方は、サポートされ続けます。 Adobeが個人の記事とはいえ、このような古い情報を公式サイトに掲載し続けるのは理解に苦しみます。現在もこの記事をブックマークしたり、共有したりする方が多いため、embedタグを使わないで強引にobjectタグを使ってクロスブラウザや将来対応を行うべきだという意見を表明する人もいます。しかし、embedタグは既に広く一般に普及していることから、W3CなどでもHTML5以降でも正式採用することが決まっているので、心配する必要はないのです。むしろ、iOSなどFlash非対応環境の広がりへの対応に労力を傾けるべきです。そちらの方が、よほど「将来を見据えた」道です。