- 2006-10-26 (Thu) 23:59
- (X)HTML/CSS
先日公開されたFirefox2(Fx2)や、待ちに待ったWindows Internet Explorer 7(IE7)が11月にローカライズ正式版をリリースなど、ブラウザの更新が目立っていますね。ましてや、現在の2強モダンブラウザなのだからなおさらですね。
ということで、「文書型宣言によって切り替わるモード一覧表」を書いてみました。これから作成するサイトや既存のサイトがどのモードで動いているのか、知っていると幸せになれるかもしれません。
代表的なものを中心にリストにしました。過去の物は一部まとめてあります。
文書型定義 | Fx2 | IE7 | IE6 | Opera9 | NN7 | Safari | MacIE5 |
---|---|---|---|---|---|---|---|
文書型定義なし、もしくはHTML 2.0及び3.2 | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 |
HTML 4.01 | Fx2 | IE7 | IE6 | Opera9 | NN7 | Safari | MacIE5 |
HTML 4.01 Strict URLなし | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 互換 |
HTML 4.01 Strict URLあり | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
HTML 4.01 Transitional URLなし | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 |
HTML 4.01 Transitional URLあり | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
HTML 4.01 Frameset URLなし | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 | 互換 |
HTML 4.01 Frameset URLあり | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 | Fx2 | IE7 | IE6 | Opera9 | NN7 | Safari | MacIE5 |
XHTML 1.0 Strict XML宣言なし | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 Strict XML宣言あり | 標準 | 標準 | 互換 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 Transitional XML宣言なし | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 Transitional XML宣言あり | 標準 | 標準 | 互換 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 Frameset XML宣言なし | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.0 Frameset XML宣言あり | 標準 | 標準 | 互換 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.1 | Fx2 | IE7 | IE6 | Opera9 | NN7 | Safari | MacIE5 |
XHTML 1.1 XML宣言なし | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 | 標準 |
XHTML 1.1 XML宣言あり | 標準 | 標準 | 互換 | 標準 | 標準 | 標準 | 標準 |
さて、ここで気になるのがIE7でしょうか。
正式版は先日英語版がリリースされましたので、日本語版も英語版をローカライズしたものになると思われます。ここではIE5~6の互換モードではおなじみだったXML宣言を記述したXHTMLは後方互換モードになるいやらしいバグを、「ボックスモデル解釈のバグ」を使って検証してみたいと思います。またそれと同時に、IE7で使えるか疑問だったアンダースコアハックが使用できるのかも追ってみたいと思います。
文書型定義 | _ハック | *ハック | URL | SS IE6 | SS IE7 |
---|---|---|---|---|---|
HTML4.01 Strict URLなし | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
HTML4.01 Strict URLあり | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
HTML4.01 Transitional URLなし | IE6 IE7 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
HTML4.01 Transitional URLあり | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.0 Strict XML宣言なし | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.0 Strict XML宣言あり | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.0 Transitional XML宣言なし | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.0 Transitional XML宣言あり | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.1 Strict XML宣言なし | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
XHTML1.1 Strict XML宣言あり | IE6 | IE6 IE7 | サンプル | 画像を見る(IE6) | 画像を見る(IE7) |
いかがでしょうか?IE7では、XML宣言を指定してもちゃんと標準モードで描画されていますね。
また、IE7も互換モード時はアンダースコアハックに対応するみたいです。これが既存のサイトに影響してくるかどうかは、そのサイトの文書型定義に依存していきますね。
ただ、IE7のアンダースコアハックは、IE6以下に合わせて作られたコンテンツのために残しておいた物だと思います。(と、wuさんがいっていた気がします。)
*追記&修正(2006-12-20)
数ヶ月前に書いたこのエントリーですが、hxxk.jpの真琴さんの方でより詳細な一覧表とともに、このエントリーが正しいかどうか検証していただきました。
結果、このエントリー自体には間違いはなかったみたいなのですが、真琴さんの検証用サンプルでは違う結果が。公開識別子"-//W3C//DTD HTML 4.02 Transitional//EN"の「//EN」の前にスペースが入ることで標準モードに切り替ってしまう現象が起きたのです。これは盲点ですね…!
W3Cの仕様書にて公開識別子を確認したところ、スペースは入っていませんでしたので、スペースなしが正しい公開識別子になるのだと思います。Fx,IEでDOCTYPEのチェックがどのようになっているかは、以下の公式文書にて説明されております。
実際、僕も過去の作品等を見返してみたところ、スペースを含んだ間違った公開識別子が発見されましたので、とてもヒヤヒヤしております。この間違いに対する発見とともに、改めてDOCTYPEスイッチを見直すきっかけを与えてくださった真琴さんには本当に感謝いたします。ありがとうございます。