21

これは私を狂わせています。

何を試しても、Internet Explorer は IE7 標準ドキュメント モードに切り替わります。HTML5ボイレットプレートとHTML5リセット(独自のサイトがQuirksモードになります)を使用して、コードを何も削除して動作させようとしました。

また、何があっても IE を強制的に最新バージョンにするメタ タグを追加しましたが、W3C に従ってマークアップが無効になっただけです。

これは私が持っているものです。私は何が欠けていますか?

<!doctype html>

<!--[if IE 7 ]> <html class="ie7> <![endif]-->
<!--[if IE 8 ]> <html class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <p>Test text</p>        
</body>
</html>

編集

以下の提案で解決策が見つかりました。提案はうまくいきませんでしたが、答えにつながりました。bodyではなくタグにクラスを課すため、これはすべての人に100%適しているとは限りませんがhtml、私にとっては機能し、IEでも機能するようです。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>
4

8 に答える 8

10

このスレッドから

X-UA-Compatibleメタタグは、要素のタイトルの直後に表示する必要があります。他のメタタグ、cssリンク、およびjsスクリプト呼び出しをその前に配置することはできません。

于 2012-10-11T10:51:41.097 に答える
10

以前の提案で解決策が見つかりました。提案はうまくいきませんでしたが、答えにつながりました。bodyではなくタグにクラスを課すため、これはすべての人に100%適しているとは限りませんがhtml、私にとっては機能し、IEでも機能するようです。

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>

編集

html私は実際に上記の使用をやめ、HTML5BP で提案されているように、IE 固有のクラスを要素に追加しました。

chrome=1また、Chrome Frame はまもなく廃止されるため、meta タグから削除することをお勧めします。ただし、誰かがまだそれを使用しているというまれなケースでは、それを保持しても害はありません.

言及されていないと思われるもう 1 つの確認事項は、おそらく IE で最も苛立たしい設定である「互換表示でイントラネット サイトを表示する」のステータスです。IEのような名前のテスト サーバーを実行するとhttp://mytestserver:8888、ドキュメント ヘッドでの操作に関係なく、イントラネット サイトと見なされてモードが切り替わります。

この設定は、古い共有ポイントのイントラネットが実際に依存しているため、会社のグループ ポリシーで有効になっています。古いがらくたには最適ですが、実際に標準に準拠しようとしている新しいものにはひどいものです。

Tools > Compatibility View Settings古いサイトがある場合は、そのスイッチをオフにして、手動で切り替える準備をしてください。

于 2012-10-11T11:21:00.850 に答える
8

IE は、イントラネット サイトで非常に悪い動作をすることがあります<meta>。ヘッドの行に関係なく、強制的に互換モードになります。ただし、Web 構成に以下を追加することで、サーバーがブルート フォース IE にヘッダーを送信して動作するようにすることができます。

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
于 2012-10-11T10:57:23.333 に答える
3

このスレッドの Umesh P からの回答は私にとってはうまくいきました。

http://answers.microsoft.com/en-us/ie/forum/ie9-windows_7/ie9-always-rendering-pages-in-ie7-compatibility/c0177b44-3950-e011-8dfc-68b599b31bf5

于 2013-05-08T19:32:36.223 に答える
3

キープ

<!doctype html>

ページソースの最初の行であり、X-UA-Compatible メタタグは、チルトタグの隣接する次の兄弟でなければなりません。

<meta charset="utf-8">
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
于 2013-09-25T08:39:03.400 に答える
2

また、ローカルホスト上のサイトにIE7標準モードを強制するie10でこの問題が発生していました。名前にドットを含む仮想ホスト (local.x) を追加/使用すると、問題が解決しました。

于 2012-11-08T01:55:12.003 に答える
0

IE8がIE7標準ドキュメントモードでレンダリングされていたときに、他のすべてを試したにもかかわらず、次の方法でこの問題を修正しました。これを doctype 宣言の直前に追加します。

<!--[if IE ]><![endif]-->

したがって、結果の HTML は次のようになります。

<!--[if IE ]><![endif]-->
<!doctype html>
<!--[if IE 7]><html class="lt-ie8"><![endif]-->
<!--[if IE 8]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->
<head>
    <title>Page title here</title>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

なぜこれが機能するように見えるのかについては、他の誰かがコメントする必要があります。それは私には謎です。

于 2014-02-11T22:49:18.090 に答える