まめ畑

ゆるゆると書いていきます

IE8のレンダリングモードのメモ

今日、IE8 RC1が公開されました。
いよいよIEもVer8になるんですね。最近は、IEをめっきり使わなくなりましたが、やはり新バージョンが出ると聞くと試したくなりますね。
以前から、IE8自体は使っていて、Winows7βにも搭載されているので最近若干使用頻度が上がった感じがします。

IE8はセキュリティの強化やユーザの利用方法を利用した機能などが追加されていますが、何よりレンダリングの正確さが向上しています。
少しレンダリングについてのメモ。
詳しくは他のサイトで、DOCTYPE宣言によるQuirksモードへの切り替えの可否について詳細にまとめられています。
http://msdn.microsoft.com/ja-jp/library/cc288325(vs.85).aspxも参考になります。


IE8のレンダリングモードはご存知のとおり

  • IE8標準準拠モード
  • IE7標準準拠モード
  • Quirksモード

と3種類あり、IE8標準準拠モードがデフォルトになっています。
しかし、このモードだとサイトのレイアウトが思いっきり崩れてしまう事があります。
そんな時はすかさずIE7標準準拠モードに切り替えます。

これをクリックすると切り替わりるので、崩れたあのページもちゃんと表示されます。
IE7レンダリングモードなので、IE7で崩れるサイトは崩れたままです。


さて、いちいちユーザに切り替えてもらうのはしのびないので、サイト側で切り替える事も出来ます。

さっきのモード切替ボタンがなくなりましたね。
これは、サイトのmeta要素でレンダリングモードを指定しているためです。

<!-- IE8モードを指定 -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">

<!-- IE7モードを指定 -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">

昔のIE8はcontentにIE7とかIE8とかって入れていましたが、現在はこれでおkです。
後は、レスポンスヘッダーに「X-UA-Compatible」を入れて、ページ毎ではなく、サイト単位で指定する事も可能です。


httpd.confの

LoadModule headers_module modules/mod_headers.so

のコメントアウトをはずします。
後は、以下のheaders.confをconf.dディレクトリやconfigファイルの読み込み先に指定してあるディレクトリに入れて、Apacheの再起動で完了です。


ubuntuだと
/etc/apache2/mods-available
中に
headers.loadというファイルを作り

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

と記述し保存します。


次に、
headers.conf
というファイルを作り

<IfModule mod_headers.c>
          Header set X-UA-Compatible "IE=EmulateIE7"
</IfModule>
もしくは
<IfModule mod_headers.c>
          Header set X-UA-Compatible "IE=EmulateIE8"
</IfModule>

と記述し保存します。

sudo a2enmod headers
sudo /etc/init.d/apache2 force-reload

を実行します。


これでサイト毎にレンダリングモードの指定が可能になります。
一部のディレクトリ以下ででいいよ!という方は
headers.confに

<Location /hoge>
Header set X-UA-Compatible “IE=EmulateIE7”
</Location>  

といった形で指定すればおkです。
mod_headersの使い方は
mod_headers - Apache HTTP Serverが参考になります。



余談ですが、Windows7用のIE8の更新は未だだそうです。
次回、アップデートでの更新との事。