IEのドキュメントモードと互換表示について

カテゴリ: 開発

記事投稿日: 2013年4月9日



IE10でも相変わらずバグがあり、しかも今度はCSSでも調整ができないため、
「互換表示」での対応を促しているサイトが増えてきました。

『【終了】IE10ではActive!Mailが利用できません -上智大学』
http://ccweb.cc.sophia.ac.jp/jo9v9ek4s-211/?block_id=211&active_action=journal_view_main_detail&post_id=108&comment_flag=1

コーダーの仕事としては、「互換表示」というアクション(ボタンを押す)を
ユーザーにさせることなく、ブラウザのデフォルトの状態で対応できるよう
求められることが多いです。

たとえば、スターハックという記述で、IE6だけ、IE7だけ、IE8だけに適応される
プロパティを追加したり、メタ要素で特定のバージョンのブラウザでアクセスした時にだけ
読み込むスタイルシートを作成しておく、などといった手法です。
これらは非常に面倒で管理もしにくく、IEがデザイナーに嫌われている深い要因のひとつです。

コーダーという職業柄、互換表示をユーザーにお願いするというのは、
「CSSで調整できません」「ギブアップです」と言っているようなものです。
あるいは、IE10のように、そもそも調整自体ができない、ということです。
仕事としてはIE6以上のブラウザに対応したページを作る、ということが
大前提であることが多く、これまで互換表示というものに取り組むことは
なかったのですが、今月に入って、とある案件で調査する機会がありました。

話を単純にするために、IE8のドキュメントモードについて、まとめてみます。

ドキュメントモード、つまり、ブラウザがサイトの内容を表示する
レンダリング、とよばれる機能が、IE8には3種類あります。

・IE8の標準モード
・IE7の互換モード
・Quirksモードと呼ばれるIE5の互換モード(※1)
(IE6の互換モードがないのはなぜ…)

コーダーにとって頭が痛いのは、
Quirksモードなんてものがあることです。
Quirksモードになる条件は、以下の4つです。

① DOCTYPEが宣言されていない
② HTML3.0以下のDOCTYPE宣言を記述している
③ HTML4.01 Transitional/FramesetのDOCTYPE宣言でシステム識別子(DTDのURL)を記述していない
④METAタグのcontents要素でIE5を指定する

XHTMLでコーディングを行っているなら、
Quirksモードなんてものは、ほとんど無視してしまっていい話です。

無料のテンプレートを使っていたりすると、
DOCTYPEがなかったり、古いものである可能性がありますが、
それもDOCTYPEを直せば済みます。

HTMLソース内に、IE7でしか正常に表示できない要素があると、
IE8ではドキュメントモードがIE7になり、
ユーザーの使用しているブラウザの設定によっては
アドレスバーの横に「互換表示」ボタンが表示されることがあります。

IE8における「互換表示」とは、IE7のレンダリングモードで表示を行うことです。
IE8になった時、IE7で作られたサイトが正常に表示されないことがあったために
このモードがあるそうですが、コーダーから言わせると、
IE6・IE7がバグの温床で、IE8でましになった、というのが正しいのです。

マイクロソフト側からすると、古いブラウザを使っている人たち向けに、
「今までのブラウザ表示はおかしかったので、ソースを直してください」とお願いするよりは、
「互換表示ボタンを押せば直りますよ」と言った方が波風を立てないですむという
話なのだと思います。

コーダー側の結論としては、
XHTMLでコーディングし、
ブラウザの機能で互換表示なんてものはさせることなく、
IE6・7・8のいずれでも正しく表示するように作る、というのが
やはり一番正しいやり方です。長い目で見ても安心です
(作り手はしんどいですし、発注する側は予算を多めにとられます。
だからIEは嫌われます)。

互換表示機能を使って対応する、というのは、
ブラウザのバージョンが上がった時に表示が崩れるので
前のレンダリングモードで表示を行う、という消極的な手法ですが、
今まで正しいコーディングはできていなかったが、
とりあえず動いていたということでもあります。

ただし、冒頭でも述べましたが、IE10については話が別です。
スタイルシートでの調整が効かないそうなので、
コーディングをどうやっても対応できないという、
ブラウザとしては致命的な欠陥になります。

この件が、改善されないと、公共機関のサイトなどは、
「手動で」互換表示を行わないとIE10では正常に
見られないところがどんどん増え、不満の声が高まるのは必至です。

非常に不格好ですし、コーダーは、職場の環境によっては
不条理な責められ方をされるかも知れません。
コーディングでは直らないバグ。
こんなブラウザを使いたいとは思いません。

役所や教育現場など、重要機関のサイトでは、
IEをデフォルトのブラウザとして使っているとことがほとんどですが、
最新バージョンがこんな有様では、もっと安定して、安心して使える
FirefoxやChromeへ乗り換えるべきだというのが正論になっていくでしょう。

第一、ブラウザはフリーソフトですから、互換表示をお願いするより、
「今後はIE以外のブラウザを使ってください」とお願いする方が
よほど理にかなっていると思います。

が、まだまだ現実は、使い慣れたIEがいい、という
非生産的な意見に流されていくかもしれません。

あと10年もしたら、ITが身近にある世代、もっと柔軟なユーザーが
増えているでしょうから、対応も変わってきそうです。
その時、古い環境・古い体質は捨てられるでしょう。
バージョンアップがどんどん簡単に、安価になっていく時代にあって、
ただ維持するというだけのために時間や費用を割く「風習」は
情報社会には無用なものではないでしょうか。

※1 IE9まではQuirksモードはIE5です。IE10ではHTML5が有効になるという…。
名前が同じままなので混乱する元です。機能が違うなら言い方も変えるべきです。

<参考サイト>
・IE8のレンダリングモードと互換表示
http://builder.japan.zdnet.com/html-css/sp_internet-explorer-8-2009/20391111/2/

・DOCTYPE宣言 TAG index
http://www.tagindex.com/html_tag/basic/doctype.html

・各HTMLバージョンのDOCTYPE宣言のサンプル集
http://www.animegif.net/tips/html/doctype-html-public.html

・Internet Explorer 10 の quirks モードは今までの quirks モードではない
http://hebikuzure.wordpress.com/2012/03/24/internet-explorer-10-%E3%81%AE-quirks-%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AF%E4%BB%8A%E3%81%BE%E3%81%A7%E3%81%AE-quirks-%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84/








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA




トップに戻る