ふろしき Blog

インターネットビジネスの基本知識やWebテクノロジー、エンジニア組織論について、経験談を交えつつお話します

IE11を裏ワザ的なやり方でDOCTYPEスイッチを有効化する方法

IE11はDOCTYPEスイッチが機能しません。これは恐らく、ドキュメントモードが非推奨へ変わったからでしょう。
(※参考 : ドキュメント モードの非推奨 - Microsoft )

しかしIEはまだ、Quirksモードを内部的に残しています。今までとは異なる手段にはなりますが、有効化することが可能です。ただし、ドキュメントモード非推奨化に伴い、Quirksモードは表向きなくなったという扱いです。「Quirksモード」という表現は、IE11のどこを探しても見つかりません。こうした扱いの変化もあり、制御には少しだけコツが必要です。

内部ドキュメントモードとその表現方法の違い

IE11が内部的に備えている全てのドキュメントモードは、以下の通りです。

  • IE5モード
  • IE7モード
  • IE8モード
  • IE9モード
  • IE10モード+Quirksレイアウト
  • IE10モード
  • Edgeモード(※ IE11の動作)

「IE5モード」は、IE6〜9で提供されていた「Quirksモード」と、IE10で提供されていた「IE5 quirksモード」と同じ扱いのものです。基本的にはIE5の動作をエミュレートします。

対して「IE10モード+Quirksレイアウト」とは、IE10で提供されていた、HTML5との相互運用を図るため機能追加が行われたQuirksモードです。IE10で提供されていたQuirksモードは、IE5との互換性が無いことをMicrosoftが公表しています。
(※参考 : 相互運用可能な (HTML5) Quirks モード - Microsoft )

F12開発者ツールから見えるドキュメントモードは、以下の項目になります。

f:id:furoshiki0223:20131127192830p:plain

5/7/8/9/10/Edgeと、6つにしか見えません。

IE11では、IE10モード+Quirksレイアウトが有効時、表向きには「IE10」という表示がされます。逆にIE10モード+Quirksレイアウトを有効にしたい場合、F12開発者ツールからはそれを指定することができなくなっています。

IE10モード+Quirksレイアウトを有効にするには、X-UA-CompatibleとDOCTYPEスイッチによる合わせ技が必要になります。そしてその指定方法は、Quirksモードとそうでないものが混在するWebシステムを11へ移行した際に、意図せず有効化させてしまう可能性が高い組み合わせであるため、取り扱いには注意が必要です。

X-UA-CompatibleとDOCTYPEスイッチ動作一覧

IE11のX-UA-Compatibleと、DOCTYPEスイッチによるStandard/Quirksモードの切り替えに伴う内部ドキュメントモードは、以下の一覧の通りです。縦軸はX-UA-Compatibleのパラメータ、横軸はDOCTYPEスイッチによる状態切替を表します。

Standard Quirks
5 IE5モード IE5モード
7 IE7モード IE7モード
8 IE8モード IE8モード
9 IE9モード IE9モード
10 IE10モード IE10モード
11 IE11モード IE11モード
EmulateIE7 IE7モード IE5モード
EmulateIE8 IE8モード IE5モード
EmulateIE9 IE9モード IE5モード
EmulateIE10 IE10モード IE10モード+Quirksレイアウト
EmulateIE11 IE11モード IE11モード
Edge IE11モード IE11モード

>> DOCTYPEスイッチの切替条件は、IE10と同じです

最善の対策はあくまで「改修」

X-UA-Compatibleは、HTTPレスポンスヘッダとHTML無いのmeta要素の2箇所で定義されますが、常に後者が優先されます。このため、複数のドキュメントモードを同一システム内で混在させた場合、新しいIEへのバージョンアップにドキュメントモードを活用するケースでは、HTTPレスポンスヘッダを利用することになるでしょう。

IE10モード+Quirksレイアウト特化のシステムは滅多に開発されないことが想定されるため、IE11以降、トラブルを避けるためEmulateIE系のパラメータは利用しないことをオススメします。

そもそもですが、IE11からはドキュメントモードは非推奨です。Microsoftはこれまで一時的な対応策としてこの方法を提供してきましたが、IE12以降は機能として削除される可能性があります。Windows8系では定期的にIEのバージョンアップが強制されるため、本対策を利用してさらにシステムの延命を図ろうとしているのであれば、そのシステムは短命に終わる可能性が高いでしょう。本対策が必要なタイミングはごく稀であると認識して下さい。

正しい移行の方法は、改修を行うことです。

このブログの筆者について

川田 寛

株式会社メディアドゥのVP of Engineering。ネットでは「ふろしき」と呼ばれている。

2009年、新卒としてNTTグループにて仮想化技術・Web標準の研究と技術コンサルティングに従事。2015年よりピクシブ株式会社にて、Webエンジニア・エンジニアリングマネージャー・事業責任者・執行役員などを通じて、技術組織のデザインと技術系の新規事業に関わる。2021年12月より、現職へとジョイン。

ネット事業と技術組織は表裏一体!良いネット事業は良い技術組織から!日本のコンテンツを一つでも多く世界へ届けるべく、技術組織デザインと新規事業の二足の草鞋を履いて邁進中。

このブログでは、主に「インターネット事業のビジネス基本知識」「Webテクノロジーのトレンド」「エンジニア組織の設計手法」について、経験談を交えつつ解説していきます。私と話をしてみたいという方は、以下のフォームより気軽にご連絡ください。

お問い合わせフォーム
免責事項: 本ブログの発言は個人の見解であり、所属組織を代表するものではありません。