111

metaHTML5ボイラープレートが使用しているものと同じものを使用しましたが、W3C HTMLバリデーターは不平を言います:

要素 meta の属性 http-equiv の値 X-UA-Compatible が正しくありません。

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

metaこのタグの何が問題になっていますか?

4

8 に答える 8

67

X-UA-Compatible が「標準」HTML (仕様によって参照される公開編集可能な Wiki ページに表示されることを含む FSVO 「標準」) ではないか、バリデーターがその Wiki の現在のステータスに対応していません。

執筆時点 (20130326) X-UA-Compatible は、次のように述べているセクションの下の wiki ページに表示されます。ドキュメント。」したがって、バリデータはこの値を拒否するのが正しいです。

于 2013-01-07T15:14:12.460 に答える
42

機能に影響を与えずに技術的に有効にしたい場合(誰もが緑色のファビコンを見るのが大好きです)、「if IE」タグでラップするだけで済みます。

<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
于 2013-04-24T05:38:14.847 に答える
30

考えられる解決策の 1 つは、Aaron Layton によるこの素晴らしい記事で提案されているように、ヘッダーにサーバー側の修正を実装することです。(すべての功績は彼に帰すべきです。私は盗作ではなく言い換えます...)

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

「Internet Explorer がこの行に遭遇すると、プラグインがインストールされている場合は、使用されているエンジンを最初に Chrome Frame に変更し、次に Edge (ブラウザでサポートされている最高のドキュメント モード) に変更します。」

手順:

  • ページの検証を修正する - これは、タグを削除するだけで実現されます
  • レンダリング速度 – ブラウザーがタグを認識してからモードを変更するのを待つ代わりに、応答ヘッダーとして正しいモードを前もって送信します。
  • Internet Explorer の修正のみを表示していることを確認してください。サーバー側のブラウザー検出を使用して、IE にのみ送信します。

PHP でヘッダーを追加するには、これをページに追加するだけです。

if (isset($_SERVER['HTTP_USER_AGENT']) &&
    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
        header('X-UA-Compatible: IE=edge,chrome=1');


または、次のように .htaccess ファイルに追加することもできます。

<FilesMatch "\.(htm|html|php)$">
    <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    </IfModule>
</FilesMatch>


元の記事へのリンク、考えられる注意事項についてコメントを確認してください。C# の実装も含まれています。

不正な値 X-UA-Compatible を完全に修正

お役に立てれば!

于 2013-11-11T11:10:53.033 に答える
2

..これは良い答えでしょうか?

PHP で HTTP ヘッダーを設定します。

これは私自身の作品ではありませんが、他の人にも役立つことを願っています。

于 2013-09-08T19:58:32.293 に答える
1

バリデーターの src コードをダウンロード/ビルドすると、自分でサポートを追加できます。

などのファイルに以下を追加し、 にhtml5-meta-X-UA-Compatible.rncインクルードしhtml5full.rncます。

私はこれを行いましたが、検証にはうまく機能します。

meta.http-equiv.X-UA-Compatible.elem =
  element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs }
  meta.http-equiv.X-UA-Compatible.attrs =
    ( common.attrs.basic
      & common.attrs.i18n
      & common.attrs.present
      & common.attrs.other
      & meta.http-equiv.attrs.http-equiv.X-UA-Compatible
      & meta.http-equiv.attrs.content.X-UA-Compatible
      & ( common.attrs.aria.role.presentation
        | common.attrs.aria.role.menuitem
        )?
    )
    meta.http-equiv.attrs.http-equiv.X-UA-Compatible = attribute http-equiv {
      xsd:string {
        pattern = "X-UA-Compatible"
      }
    }
    meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
      xsd:string {
        pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?"
      }
    }

common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem
于 2014-01-10T15:23:29.253 に答える