253

私はかなり混乱しています。設定できるはずです

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

IE8 および IE9 は、最新のレンダリング エンジンを使用してページをレンダリングする必要があります。ただし、テストしたところ、サイトの他の場所で互換モードがオンになっている場合、強制的にオンにしないようにする必要がありますが、ページで互換モードがオンのままになります.

IE が(イントラネットであっても) 互換モードを使用しないようにするにはどうすればよいですか?

FWIW、私は HTML5 DocType 宣言 ( <!doctype html>) を使用しています。

ページの最初の数行を次に示します。

<!doctype html> 
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]--> 
<!--[if IE 7 ]>    <html lang="en" class="innerpage no-js ie7"> <![endif]--> 
<!--[if IE 8 ]>    <html lang="en" class="innerpage no-js ie8"> <![endif]--> 
<!--[if (gte IE 9)|!(IE)]><!--> 
<html lang="en" class="innerpage no-js"> 
<!--<![endif]--> 
    <head> 
        <meta charset="ISO-8859-1" /> 
        <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

編集: IE8 のデフォルト設定は、イントラネット サイトに IE7 互換モードを使用することであることを知りました。これは X-UA-Compatible メタ タグをオーバーライドしますか?

4

18 に答える 18

263

イントラネット サイトの IE の互換表示設定をオーバーライドする必要がある場合は、web.config (IIS7) またはWeb サイトのプロパティ (IIS6) のカスタム HTTP ヘッダーを使用してオーバーライドし、そこに X-UA-Compatible を設定します。メタ タグは互換表示設定の IE のイントラネット設定を上書きしませんが、ホスティング サーバーで設定すると、互換性が上書きされます。

IIS7 の web.config の例:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=EmulateIE8" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

編集: ;clearの直前からコードを削除しました。addコピーと貼り付けによる不必要な見落としでした。コメンテーターの皆さん、大成功です!

于 2012-02-18T05:47:55.113 に答える
185

@TimmyFranksが彼の回答で提案したように、サーバー側のソリューションが推奨されますがX-UA-Compatible、ページレベルでルールを実装する必要がある場合は、次のヒントを読んで、すでにやけどを負った人の経験から利益を得てください。


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

<head>
    <title>Site Title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta charset="utf-8">
    <script type="text/javascript" src="/jsFile.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
    <link rel="shortcut icon" href="/apple-touch-icon.png" />
</head>

ページに条件付きコメントがある場合( に配置されているとしましょう<html>)、それらは . の後に配置する必要があります<head>

// DON'T: place class inside the HTML tag 
<!--[if gt IE 8]><!--> 
    <html class="aboveIe8"> 
<!--<![endif]-->

// DO: place the class inside the BODY tag
<!--[if gt IE 8]><!--> 
    <body class="aboveIe8"> 
<!--<![endif]-->

Html5BoilerPlate のチームがこのバグについて書いています - http://h5bp.com/i/378 彼らにはいくつかの解決策があります。

イントラネットと互換表示に関しては、[ツール] > [互換表示設定] に移動すると設定があります。

互換表示設定

于 2012-03-08T20:33:38.043 に答える
26

結局のところ、これは、がに設定されている場合でも、すべてのイントラネットサイトを互換モードに強制するというMicrosoftの「インテリジェント」な選択と関係があります。X-UA-CompatibleIE=edge

于 2011-07-18T17:15:12.177 に答える
9

また、ローカル ホストの IE7 ドキュメント標準で IE9 レンダリングの同じ問題が発生しました。多くの条件付きコメント タグを試しましたが、うまくいきませんでした。最後に、すべての条件付きタグを削除し、以下のようにヘッダーの直後にメタタグを追加しただけで、魅力的に機能しました。

<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

それが役に立てば幸い

于 2013-08-30T08:14:35.750 に答える
8

「互換表示でイントラネット サイトを表示する」オプションのチェックを外し、応答ヘッダーに X-UA-Compatible がある場合でも、ブラウザがデフォルトで「互換表示」になる別の理由があります - グループ ポリシーです。コンソールで次のメッセージを確認します。

HTML1203: xxx.xxx は、グループ ポリシーを通じて互換表示で実行するように構成されています。

xxx.xxx はサイトのドメインです (つまり、test.com)。これが表示された場合、ドメインのグループ ポリシーは、doctype、ヘッダーなどに関係なく、test.com で終わるすべてのサイトが自動的に互換モードで表示されるように設定されています。

詳細については、次のリンクを参照してください (html コードの説明): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx

于 2013-07-24T15:42:36.733 に答える
5

NEOSWFが上で指摘しているように、Paul Irishの条件付きコメントは、メタタグが影響を与えるのを防ぎます。

ここにはいくつかの修正があります(http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/

これらには以下が含まれます:

サーバーヘッダーを使用して2つのHTMLクラスを追加し、Doctypeの上に条件付きコメントを追加します。

私の最新のプロジェクトでは、PaulIrishの条件付きコメントを削除することにしました。最初にたくさんのテストを行わずにhtmlの前に何かを追加するというアイデアは好きではありませんでした。HTMLを見るだけで何が設定されているかを確認できるのは素晴らしいことです。

結局、私は本文の直後にdivを囲み、条件付きコメントを使用しました。

  <!--[if IE 7]><div class="ie7"><!--<![endif]-->
  ... regular body stuff
  <!--[if IE 7]></div><!--<![endif]-->

私はこれを体の周りで行うことができましたが、WordpressのようなCMSではより困難です。

明らかに、マークアップ内の別のDIVですが、古いブラウザー専用です。

ただし、プロジェクトごとの決定になる可能性があると思います。

また、charsetメタタグが最初の1024バイトに含まれる必要があることについても読んだので、これで確実になります。

時々、最も単純で読みやすいアイデアが最良であり、それは間違いなく考える価値があります!これを指摘してくれた上記のリンクの6番目のコメントに感謝します。

于 2013-01-16T11:13:34.767 に答える
5

以下を htaccess ファイルに追加すると、うまくいきました。

BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
于 2013-09-10T08:27:12.403 に答える
2

ティミー・フランクスは私にぴったりでした。今日、クライアントが会社全体で IE8 を使用しており、イントラネット用に作成したサイトを強制的に互換モードにするという問題が発生しました。「IE-Edge」を設定すると直ったようです。

<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=Edge" />
  </customHeaders>
</httpProtocol>
于 2012-03-29T20:59:03.100 に答える
1

PHP を使用して HTML の前にヘッダーをロードすることで、これを回避することができ、非常にうまく機能しました。

<?php 
header( 'X-UA-Compatible: IE=edge,chrome=1' );
header( 'content: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' );
include('ix.html');
?> 

ix.html は、ヘッダーを送信した後にロードしたかったコンテンツです。

于 2014-06-10T20:40:29.637 に答える
0

LAMP スタックを使用している場合は、これを Web ルート フォルダーの .htaccess ファイルに追加します。すべての PHP ファイルに追加する必要はありません。

<IfModule mod_headers.c>
    Header add X-UA-Compatible "IE=Edge"
</IfModule>
于 2013-07-03T09:09:30.200 に答える
0

多くの組み合わせを試した後、同じ問題が発生しました この作業メモがありました イントラネットの互換性をチェックしました

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<head runat="server">
于 2013-06-26T07:39:58.593 に答える