QA@IT

IE11の標準モードでの表示の違いについて

19122 PV

初めまして。
先日こちらでWebアプリ(asp.net CLR4.5)のIE11での表示の違いについて質問したものです。
IEでの互換表示設定で「イントラネットサイトを互換表示で表示する」のチェックを外し、
標準モードで表示することで意図した表示を行うことができました。

但し、IEでの設定変更はユーザーに委ねられてしまうので、
必ず標準モードで表示するよう以下のメタタグを追加しました。

meta http-equiv="X-UA-Compatible" content="IE=edge"

このコードを追加し、互換表示のチェックを外したところ、これはこれでまた違った表示になりました。
コードを追加せずチェックを外した状態が一番意図した表示だったのですが、
チェックが付いたままで(マシン導入時のデフォルト設定では互換表示のチェックはついているようです)、
こちらのコードでチェックを外した場合と同じ表示をさせることは可能でしょうか?
そもそもIE11からは互換モードでの表示は非推奨らしいのですが、ツールに機能がついている以上、
何らかの対応が必要なようで・・・。

何か方法がありましたらぜひアドバイスをお願いいたします。

回答

何か思い違いしてませんか?

先のスレッドで書いた「localhost はイントラネットとみなすということのようです。」の意味を理解されているでしょうか?

その意味は、開発マシンでローカルにアクセスした場合、URL が http://localhost... となるので、IE はイントラネットサイトとみなすと言っているのですが。なので、[イントラネットサイトを互換表示で表示する(I)]にチェックが入っていると互換表示で表示することになります。

開発マシンでローカルにアクセスした場合(URL が http://localhost... )に標準モードで表示したければチェックを外すということです。

但し、IEでの設定変更はユーザーに委ねられてしまうので、
必ず標準モードで表示するよう以下のメタタグを追加しました。

一般ユーザーは http://localhost... ではアクセスせず、http://ホスト名(またはサーバー名)でアクセスしますよね。

であれば、「IEでの設定変更」([イントラネットサイトを互換表示で表示する(I)]のチェックを外す)はしなくても標準モードで表示されるはず。

編集 履歴 (0)
  • 度々のご回答ありがとうございます。
    そして度々で申し訳ないのですが、ホスト名でアクセスした場合は、互換表示するのチェックがついていても無視され(そのサイトがイントラネットサイトであっても)、標準モードで表示されるということでしょうか?
    -
  • F12 開発者ツールで確認できるので、ご自分の目で確認したはいかがですか? 問題のページがブラウザに表示された状態で開発者ツールを開けば、メニューバー内にその時点でのブラウザモードとドキュメントモードが表示されるはずです。 -
  • 度々ありがとうございます。実は開発者ツールでも確認しました。チェック済みだとモードは互換表示7でしたので、やはりチェックは有効かと。チェックを外すと標準モードEdgeになりました。ここで、このチェックを外した場合と外さずに強制的にメタタグを追加した場合の表示に違いがあったため、不思議だな?と思った次第です・・・。 -
  • 見ている http://ホスト名 が IE のセキュリティ設定でローカルイントラネットのサイトに登録されているのでは? ご自分で設定した覚えがなくてもグループポリシィとかで。そうでもなければ IE は http://ホスト名 がイントラネットとは識別できないはずです。 -
  • はっ。そういうことですか。今サイトを確認しましたが、出荷時のデフォルト設定のままでしたので、ローカルイントラネット設定のチェックをすべて外してみると、互換表示設定がチェックされていても自動的にEdgeになりました!
    なんだかすべて納得です。本当にありがとうございます!ただ、この辺はお客様のシステム部さんの初期設定によるので要相談になりそうです。色々すっきりしました。感謝です。
    -
  • ですが、問題は解決していませんでした。イントラネットサイトでも強制的に標準モードにした場合(メタタグで設定)の、表示の違いはやはり残ります。不思議です。ちなみに開発中のアプリはお客様のイントラネットで動くシステムなので、とほほです。 -
  • 不思議ではないと思います。メタタグの設定より IE の設定([イントラネットサイトを互換表示で表示する(I)]にチェック)の方が優先度が高いから標準モードでは表示されないのでしょう。 -
  • なるほど。そうなるとどうしてもチェックを外したいところですが、他のシステムとの絡みもあるので(おそらく互換でやっと動いているシステム多数)、どちらでもOKな表示にするよう微調整します。これで解決とさせていただきます。最後までお付き合いいただきありがとうございます。一連の問題でかなり先週からかなり時間を使いましたが、質問してからあっという間に解決しました。本当にありがとうございました。 -
  • IE の設定が変えられないのであれば、解決策は「互換モードで問題なく表示されるように Web アプリを作る」ということになるのではと思います。 -
  • 本当にその通りですね。調整します・・・。 -

ホスト名であろうが解決されたIPがイントラネットであればイントラネットゾーンになります。ホスト名だと無条件にインターネットゾーンになるようなことはありません。現在がどのゾーンかはファイルメニューのプロパティを表示すればわかります。
(IE11だとメニュー隠れてるので alt+F からプロパティを表示すれば出ます)
また、イントラネットゾーンのオプションにどういったホストをイントラネットとみなすか(例えばproxyの除外設定にあるホストはイントラネットとして扱われるなど)の設定もあります。

イントラネットゾーンの場合互換表示モードとなりますが、これよりも metaタグのX-UA-Compatibleの方が優先度が高くなります。しかしながら、このmetaタグはmetaタグの中でも一番はじめに定義されるべきものとなります。scriptタグなどよりも前に記述してください。
この振る舞い自体を確認する場合はaspxよりも静的なhtmlファイルで確認されるほうがいいでしょう。

なお、IEでホストが信頼済みサイトとして登録されていた場合は信頼済みゾーンですのでイントラネットゾーンではなくなります。

今回は関係ないと思いますが、過去ASP.NETのブラウザ判定にバグがあってIE10がIE5未満であるという判定をされていたというのもあります。この状況ではIE9になどに見せかけると正常に動作しました。

metaタグの効果がないとの事ですが、まずイントラネットとして判断されているかを上に書いた方法でページのプロパティから確認しつつ、metaタグの位置が正しいかも確認されてみてはどうでしょう。

内容の方は私の環境(Win8.1+IE11)では <meta http-equiv="X-UA-Compatible" content="IE=edge" /><head>のすぐ下に記載してみたらIE5からEdgeになりましたので問題ないと思います。

編集 履歴 (1)

すいません、メタタグが消えていました。

meta http-equiv="X-UA-Compatible" content="IE=edge"

です。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。