4.11 Internet Explorer 8 の標準準拠4. 新機能や機能変更に伴う互換性問題 この章では、以下のような新機能や機能変更に伴う、互換性問題について紹介します。
IE 8 は HTML や CSS の標準に準拠することを重視して開発されました。これまでも、基本的には W3C が定める標準規格を基に作成されていましたが、解釈にずれがあったり、独自の仕様が追加されていたりしたため、ブラウザー間で表示が異なるケースがありました。そのため、Web 開発者はブラウザーごとに CSS を記述するといった必要がありました。IE 8 は標準規格に厳格に準拠しているため、相互運用性や保守性を高めることができます。 その一方で、これまでの IE 7 で表示できた Web ページが、IE 8 ではレイアウトやデザインが崩れてしまう可能性があります。そこで IE 8 で IE 7 との互換性を保つために、以下の回避方法と解決策が考えられます。
これらの方法のうち、1 と 2 はサイト側、つまり開発者や管理者がおこなう設定です。一方、3 から 5 は、ユーザーがおこなわなければならない設定や操作です。つまり、3 から 5 は、ユーザー任せになってしまうため、ユーザーがその機能を知らなければ、ページは正しく表示されないままになってしまいます。そこで、サイト管理者・開発者は 1 と 2 をおこなう必要があります。 1 は 開発者が Web ページを IE 8 対応に完全に書き換えるものです。最終的にはこれが解決策となりますが、容易ではありません。一方、2 は IE 7 との互換性を保つための設定です。設定ベースなので容易にできるため、IE 7 対応のページを早急に IE 8 上でも表示できるようにしたい、といった場合には適切な回避策といえます。このドキュメントは、2 について詳細に取り上げます。
図 4-31: サイト側の設定とユーザー側の設定・操作
ページのトップへ これまでの IE の各バージョンの描画モードIE 5 から IE 7 までの IE には、以下の描画モードがありました。
このように、IE 6 と IE 7 では、クアークスまたは標準の 2 つのモードがサポートされていました。そのため、クアークスか標準かが分かれば、適切に描画モードを分けることができました。 ページのトップへ これまでの IE の DTD 判別ロジックIE 5 から IE 7 では、クアークスモードで描画するか、標準モードで描画するかは、DTD (Document Type Definition) を使用して設定します。例えば、以下はクアークスモードで描画される DOCTYPE 設定の一例です。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> また、以下の DOCTYPE は標準モードで描画される一例です。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"> DOCTYPE の設定の詳細は、付録「描画モード切り替え表」を参考にしてください。 この DTD の設定には、図 4-38 のような明確な判別ロジックがあり、これによって適切な描画モードが選択されることになります。
図 4-38: IE の DTD 判別ロジック ページのトップへ IE 8 の描画モードIE 5 から IE 7 とは異なり、IE 8 では 3 つの描画モードが搭載されています。クアークスモードと IE 7 標準モード、そして IE 8 標準モードです。2 つの標準モードをサポートしているのは、IE 7 と IE 8 の描画には差異があるからです。IE 7 用に作成されたページが、IE 8 で正しく表示されない可能性があるため IE 7 の互換モードが用意されています。
どの描画モードが適用されるかは、IE 7 と同様、まずは DTD によって決まります。つまり、ここでクアークスか標準かが決まります (図 4-39)。標準系だった場合、既定では IE 8 の標準モードで描画されます。そして、IE 7 の互換指定があった場合にのみ、IE 7 標準モードが使用されます。そのため、IE 8 標準モードで表示したときに問題があるページでは、IE 7 の互換指定をしなければなりません。
図 4-39: IE 8 の描画モード ページのトップへ X-UA-Compatible による IE 7 互換モードへの切り替えIE 8 で IE 7 の互換モードで描画する必要があるときには、X-UA-Compatible 互換モードスイッチを指定します。この設定は、以下のいずれかの方法で設定します。
ページのトップへ X-UA-Compatible の設定値X-UA-Compatible では、以下の表のような値を設定することができます。
「IE = EmulateIE7」は、「IE 7 と同様の動作をする」という意味です。つまり、DTD の設定によって標準モードかクアークスモードかが切り替わります。そのため、今まで IE 7 で表示できていたページは IE 8 でも表示できることになります。「IE = EmulateIE8」も同じです。DTD に依存することになります。 「IE = edge」は、最新モードで表示するための設定です。つまり、IE 8 であれば IE 8 の標準モードで、そして今後 IE の新しいバージョンがリリースされた場合には、その最新バージョンでで表示されることになります。 現在のモードを知るためには、document.documentMode プロパティを使用します。IE のアドレスバーに以下の JavaScript を入力すると、現在のプロパティ値を表示することができます。 javascript:alert(document.documentMode)
図 4-43: documentMode プロパティの確認
図 4-44: documentMode プロパティの値表示 各モードの戻り値は以下の通りです。
ユーザー エージェント文字列は、Web サーバーにレポートされるブラウザーの ID です。Web アプリケーション開発者は、ユーザーエージェント文字列を使用して、クライアントが使用しているブラウザーの種類を検出することができるため、ブラウザーの種類ごとにコンテンツを変えたい場合に役立ちます。ユーザーエージェント文字列を表示するためには、navigator.userAgent プロパティを使用します。IE のアドレスバーに以下の JavaScript を入力することで確認できます。 javascript:alert(navigator.userAgent)
図 4-45: userAgent プロパティの確認 たとえば、IE 8 では、図 4-46 のようなユーザー エージェント文字列を渡します。
図 4-46: IE 8 のユーザーエージェント文字列 図 4-46 の「MSIE 8.0」はブラウザーのバージョンです。この値は IE 7 を使用している場合は「MSIE 7.0」です。また、IE 8 の IE 7 互換モードの場合にも同じく「MSIE 7.0」が返されます。これだと、本当の IE 7 なのか、互換モードの IE 7 なのかを区別することができません。そこで、役に立つのが「Trident/4.0」です。IE 8 の場合には、このユーザーエージェント文字列が追加されています。 ユーザーエージェント文字列の詳細は、以下のサイトをご覧ください。 ページのトップへ 段階的なサイト互換性の実現Web サイトで IE 7 から IE 8 に移行する際には、図 4-47 のようなプロセスで実行します。
図 4-47: 段階的なサイトの互換性実現
|
|
ページのトップへ