▼Menu

標準モードと互換モードについて

最近のインターネットエクスプローラー7(IE7)は、HTMLやスタイルシートを仕様通りに解釈してだんだんうまく表示できるようになってきています。これを標準モードと言います。 しかし、IE6以前のブラウザでは、仕様とは違った解釈で表示してしまうことが多くあります。(バグもあります)


広告

その為、急に最新のブラウザで仕様通りの正しい解釈をするようにすると、古い基準で作られた多くのページをうまく表示しない可能性があります。

この問題を避けるために用意されているのが、互換モードという 描画モード楽天 です。しかし、互換モードでは最新の機能を使うことができません。

描画モードによって表示が大きく異なります

私は、下記のようにホームページビルダーのデフォルト設定から自動的に書き出される、DOCTYPE宣言(URLが無いもの)を使用していました。そうすると表示が互換モードになり、CSSでmax-widthを設定していても、IE7ではちゃんと表示してくれませんでした。なかなかその理由がわからなかったのですが、やっと標準モードと互換モードの違いだとわかりました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

標準モードとは

標準モードではブラウザがHTML文法をほぼ正しく解釈して表示するし、文法ミスは無視して表示します。また古いブラウザでの不具合は少しずつ改良されています。

互換モードとは

古いバージョンのブラウザに合うような表示(古いバージョンと互換)をしますので、古いバージョンで間違って解釈していた所は、間誤ったままに表示します。文法ミスは適当に解釈して表示します。IE7での新しい機能は使えません。

描画モードは、「DOCTYPE宣言」で決まります

HTMLには複数のバージョンがありますので、バージョンによって、定義されているタグの種類や仕様などが異なります。だからHTMLの文法を正しく解釈するためには、ホームページがどのバージョンのHTMLで書かれたものなのかを指定してやる必要があります。 その目的に、HTMLファイルの先頭でDOCTYPE宣言をしています。

標準モードでDOCTYPE宣言を書くには

記述したいHTMLのバージョンが判明している時は、そのバージョンのDOCTYPE宣言を書きます。もし、よくわからない時は、下記のHTML 4.01 TransitionalのDOCTYPE宣言を書いておきましょう。次のDOCTYPE宣言は、どのブラウザでも標準モードになります。

HTML 4.01 Strict

HTML 4.01 Strictは、HTML4.01で定義されているタグ等を厳格に適用したものです。つまり、FONTタグで文字サイズや色を指定したり、Bタグ<B>〜</B>で太字にすることはできません。文字の修飾には基本的にCSS(スタイルシート)を使います。また、「"http://www.w3.org/TR/html4/strict.dtd"」の記述を省略しても「標準モード」で動きます。フレームを使うことができません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

HTML 4.01 Transitionalは、HTML4.01で定義されているタグ等の中で推奨されていないものでもちゃんと表示させるものです。とりあえずよくわからない場合はこれにしておきましょう。標準モードになります。フレームを使うことができません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

HTML 4.01 Framesetは、HTML4.01で定義されているタグ等の中で推奨されていないものでもちゃんと表示させるものです。標準モードになります。フレームが使用できます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0〜1.1

XHTMLのDOCTYPE宣言ならバージョンが違っても標準モードで描画されます。次の例はXHTML 1.0 Transitionalの場合です。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

互換モードにするには

互換モードにするにはDOCTYPE宣言を書かないか、上記のStrict以外でHTML 4.01のDOCTYPE宣言からURLを除きます。

DOCTYPEより前にコメントを書くとIEで互換モードになります

WordPress の私のブログがIEだけでMax-width の動作がおかしいのに気がつきました。つまり、IE7,IE8でMax-width が働いていないのです。Firefox と Opera は問題ありませんでした。

スタイルシートのmax-width 付近の記述が間違っているのかと色々やってみましたが全く変わりません。私のホームページの方はうまく表示されているので、スタイルシートの該当部分をコピーしてみましたがそれでも変わりません。

ブラウザでソースを表示させてみて、あるいは先頭のコメントかなと思い、これを削除したらあっさりと直りました。

<!-- begin header -->

ネットで検索してみると次のような記述がありました。

XML 宣言の後に HTML コメントが挿入されている場合、Internet Explorer 8 標準モードとして表示されない
スポンサーリンク

私のWordPress の場合は次のようにXML 宣言の前なのでこの記述は間違いだと思います。XHTML1.0 Transitional 標準モードに設定しています。

<!-- begin header -->
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

「DOCTYPEより前にコメントを書くとIEで互換モード(Quirks モード)になる」のだと思います。

XML宣言後にコメントがあるとIE標準モードで表示されない

何時間もこの問題にはまってしまいました。IEはなんとかして欲しいですね。

 
Main Menu |Mobile |Top Page |電気、電器 |工夫と製作 |アンテナ |デジタル放送 |修理技術1 |修理技術2 |修理過去ログ |電気柵 |生活情報 |健康情報 |名所旧跡 |ネット環境 |WordPress |写真集 |English Top
リンク集 |Sitemap |お問合せ |Pポリシー |修理掲示板
ネット環境 Menu |BBS迷惑書込 |迷惑Mail |Mail送信規制 |nPOP使い方 |BBSログ変換 |過去ログ表示 |MailCGI改造 |HPフォルダ構造 |サーバ引越 |英語サイト作り方 |二ヶ国語相互リンク |携帯サイト作り方 |XHTML Basic |XHTML Mobile P |携帯アクセス制御 |PC携帯両用サイト |サブドメイン同期 |XHTMLに書換 |TEXTメニュー |新ウィンドウに表示1 |新ウィンドウに表示2 |外部トラッキングコード |メニュー配置 |HTML一括変更 |ファイル取込 |ヘッドタグ共通化 |外部CSS |CSSコマンド |印刷用CSS |標準,互換モード |段組 |表示の速いHP |HP横幅 |HP背景 |HP文字 |HP見出し |HPタイトル |画像使い方 |altとtitle属性 |アクセスアップ |サイトマップ作成 |RSS配信 |自ドメインRSS |RSS使い方 |htaccess転送 |パラメータ削除 |wwwの有無と統一 |アクセス制限 |Adsenseクリック規制 |Adsense表示規制 |Google広告配置 |チャネルの設定 |ブログ人に広告配置 |ランダム画像切替 |デザイン自動切替 |フォルダ名取得 |Google+1ボタン |いいねボタン |Facebookのコメント |HPビルダ起動時間 |Expression Web |複数パソコンHP更新 |FFFTP使い方 |文字大きさ |モニタの選び方 |タッピング |ページ内検索 |ショートカットキー |Thumbs.db |日本語FEP |上手な日本語変換 |データ伝送 |MTUとMSS
山里の素人農業 |Daii-Wiki |私のブログ |Car Evolution |Tomy's HP |ページの先頭
 
 
as76.net
RSS
 
楽天市場
広告
Valid XHTML 1.0
Only OGP error
更新日:2011/12/12