IE8 互換表示設定-イントラネットは関わるな!チェックを外せ!
IE8互換表関連で色々調べていると、ツール-互換表示設定「互換表示でイントラネット サイトを表示する」についての記事を見つけました。なんでもこれによれば「ドットを含まないドメイン名を使ってコンテンツにアクセスしている場合にはイントラネットだと判断しているようだと」また「localhost、127.0.0.1、192.168.x.xのようなIPやドメイン名でのアクセスはイントラネットとは判定されなかった」と・・・。いや違うよと、diary/2010-04-22の確認時点で同じドメインでローカルと2台目のパソコンで判定が違ったのだから基本あてにならないよ。関わったら負けだよと。その記事も最終的にはIE8のバグと判断して無用な労力を浪費する前にチェックを外した方が無難とうたっています。
IE8 Standardsモードで表示(互換表示の解除)
先日diary/2010-04-22の記事にてMicrosoftの一方的な判断のもとで指定されたres://iecompat.dll/iecompatdata.xmlのリストに含まれるドメイン下のページは、問答無用で旧IE互換表示が作動し、最低評価の独自解釈CSS表示を垂れ流すわ、あまつさえ「互換表示ボタン」をとっぱらって何も無かったがごとく振舞うという話を書きましたが、今回は一応IE8 Standardsモードでの表示(互換表示の解除)方法を調べたので書いておきます。
解除方法は次の3通りがあります。IE8互換モードについて
- DOCTYPE 宣言で指定する方法
- Quirks モードで表示するための DOCTYPE 宣言
・ HTML3.0 以下の DOCTYPE 宣言を記述している場合 例) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 2.0 Final//EN"> ・ HTML4.0 Frameset の DOCTYPE 宣言で DTD の URL を記述していない場合 例) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> ・ HTML4.0 Transitional の DOCTYPE 宣言で DTD の URL を記述していない場合 例) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ・ DOCTYPE 宣言を記述していない場合 上記以外の DOCTYPE 宣言を記述した場合には IE8 標準モードで表示されます。
とありますが、こちらのサイトに定義されている<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0~略 はQuirksモードで認識されていた事から当てにならないと予想出来ます。というかQuirksモードってIE5以前のCSSモードじゃないか・・・。
- META タグで使用する方法
<meta http-equiv="X-UA-Compatible" content="IE=8" />
上記METAタグを目的ページに追加すればIE8標準モードとなります。この方法が一番無難だと思われます。 - HTTP レスポンス ヘッダーで指定する方法
サーバーのヘッダ設定らしいのですが書いてある内容では理解できないのとApacheとは微妙に違うっぽいので、他を調べてみるとApacheのhttpd.confでApache Module mod_headersを使って設定するらしい。うんで、こういった設定は大概.htaccessを使うとレンタルサーバーでも設定できる場合があるのでさらに検索すると、注意書きと設定内容が見つかるのだ。
.htaccessによる指定はサーバー環境によっては利用することができない。
とか.htaccessでheaderが許可されている場合は
とか、だけどこれってそんな話ではない気がします。
○httpd.confのLoadModule headers_module modules/mod_headers.so
が有効であるか確認して
○.htaccessにHeader set X-UA-Compatible IE=8
を追加する。*1
httpd.confでmod_headersが有効ではない場合、.htaccessに上記設定を追加すると500エラーとなるスクリプトもあります。これは設定にあまり詳しくない方が単純に.htaccessへ設定を施し、一定期間後サーバー移動をした場合、エラーが発生しても特定が困難になる可能性があると言う事でわないでしょうか。