IEでの後方互換スイッチに関して勘違いしてました。だからまとめ。

2011年1月27日

今さらながら、このブログで配布してるWordPressテーマ“mypace custom”シリーズご利用時の注意事項を付け足しました。
というか、気付かず説明してなかった自分が悪いのですが。

各バージョン共通なのですが、先頭に入っているコメントが原因で、そのまま使用するとIEシリーズで後方互換モードになってしまいます。
そのため、実際に使用するときはコメントを削除するか、DOCTYPE宣言より後ろに移動させてください。

原因は、完全に私がIEで後方互換モードになる条件について勘違いしていた点があったためです。
ホントにお恥ずかしい。。。

恥ずかしついでに、ここでまとめをして恥をさらしておきます。初心者の方は同じ失敗をなさらぬよう。。。

私の後方互換に関する2つの勘違い

1. DOCTYPE宣言前に「コメント以外の何か」を書くとIE6で後方互換になると思っていた → 間違い!!

何でか知りませんが、コメントならDOCTYPE宣言前に書いてもいいような気になっていました。
何故なんでしょうね。大間違いです。
といっても、実際にそんな位置にコメントを書くことはなかったので、今まで勘違いに気付かないで来てしまいました。

たとえコメントであっても、DOCTYPE宣言の前に何かを書くと後方互換モードになります。

2. 上記の後方互換スイッチは、IE6でしか起こらないと思っていた → 間違い!!

上記1.で発生する後方互換は、IE6だけだと思っていました。
しかし、IE7でもIE8でも、書いてる時点で最新のIE9Betaでも、DOCTYPE宣言の前に何かを書くことによる後方互換スイッチは有効です。

ただし、IE7以降では、XML宣言(ってやつ)はちゃんと書けます。
IE6でしか起こらないのは、「XML宣言を書くことによる後方互換」です。

大事なことなのでもういちどまとめます。

  1. IE6では、DOCTYPE宣言の前にある、あらゆる記述が後方互換モードのスイッチになります。
  2. IE7以降では、DOCTYPE宣言の前にある、XML宣言以外のあらゆる記述が後方互換モードのスイッチになります。

ということで、配布テーマを使う時は・・・

IE以外で動作チェックしている段階では、各テンプレートの最初に書いてある”******.php start”等のコメントはあっても良いのですが、IEでの表示確認をする段階になったら消した方が幸せになれるはずです!

たとえば、header.phpの

<?php
/* header.php *
すべてのページにおいて共通で読み込むヘッダーテンプレート。
 */
?>
<!-- header.php start --> ※これは最終的には消した方がよいと思う!!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>

とか、page.phpだと

<?php
/* page.php *
	固定ページの出力用テンプレート。サイドバー無しの1カラム。
	WordPressを普通のサイトとして使う場合に相当お世話になるテンプレート。
 */
?>
<!-- page.php start --> ※これも!!
<?php get_header(); ?>

とか。

該当するテンプレート一覧

header.php
index.php
archieve.php
home.php
page.php
pagetemplate.php
single.php
404.php
goods.php *mypace custom plus
single-goods.php *mypace custom plus

ということで、「もう気付いてたよ!」っていう人はそっとスルーしておいてもらえればいいのですが、IEまわりでハマってしまった使用者様がいましたら、この場を借りて深くお詫び申し上げます。。。