IE7標準モードとIE8標準モードで適切に動作するフロントエンドをコーディングしています。
Internet Explorerを起動してページを読み込むと、IE7とIE8の両方が直接Quirksモードになります。 IE7とIE8の両方に強制的に標準モードでページを常にロードさせるにはどうすればよいですか?
これまで特別なメタタグは追加していません。
手伝ってくれてありがとう
編集:現時点では、私のdoctypeとheadは次のようになっています。
<!DOCTYPE html>
<html lang="de">
<head>
<title>...</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta charset="utf-8" />
<script src="js/html5.js"></script>
(...)
</head>
これはabsolutely確実にする方法です:
<!doctype html> <!-- html5 -->
<html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on -->
<head>
<meta http-equiv="x-ua-compatible" content="IE=Edge"/>
<!-- as the **very** first line just after head-->
..
</head>
理由:
IEが競合するanythingを満たすたびに、x-ua-compatible
を無視して、「IE 7標準モード」に戻ります。
(これが非常に古い質問に対する答えであることは知っていますが、私はこれに苦労しており、上記のスキームは正しい答えです。常に機能します)
悲しいことに、彼らはブラウザに何をすべきかを知らせるためにタグを使用したいと思っています。 this ドキュメンテーションを見て、使用するように指示します:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" >
そしてそれはすべきです。
ページの先頭でhtml5 doctypeを使用します。
<!DOCTYPE html>
強制IEは最新のレンダリングモードを使用する
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
ターゲットブラウザがIE8の場合、IE8で互換性のある設定を確認してください
正しいdoctype宣言を追加し、XMLプロローグを回避すれば、 quirksモード を回避できます。
この質問は2年以上前に聞かれたことを知っていますが、まだ誰もこれについて言及していません。
最良の方法はhttpヘッダーを使用することです
IEが読み取り前にモードを決定した可能性があるため、メタタグをヘッドに追加しても常に機能するとは限りません。 IEが常に標準モードを使用するようにする最善の方法は、カスタムHTTPヘッダーを使用することです。
ヘッダ:
name: X-UA-Compatible
value: IE=Edge
たとえば、.NETアプリケーションでは、これをweb.configファイルに入れることができます。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
HTML5 Doctypeが古いブラウザで問題を引き起こしている可能性があります。また、HTML5 shivに関連するファンキーなものになります。
XHTML Doctypeの1つに切り替えて、少なくとも一時的にマークアップを変更してみてください。これにより、問題を絞り込むことができる場合があります。
IEがQuirksモードに切り替わったときにデザインが壊れていますか? CSSが原因で物事が奇妙に表示される場合、ブラウザがモードを切り替えてもサイトが同じように見えるようにCSSを操作する価値があります。