6

私は現在、すべてのサイトが XHTML 1.0 移行用 doctype を使用している会社で働いています (はい、それが非常に古い学校であることはわかっています)。下位互換性があるため、HTML5 doctype を使用するようにすべてを変更したいと考えています。私が切り替えたい理由の 1 つは、IE8 では開発者ツールがインストールされている場合、古い XHTML doctype がブラウザーを互換モードに切り替え、ページを IE7 としてレンダリングするためです。それを読んだところ、HTML5 doctype は任意のページを標準モードでレンダリングするように設定すると信じるようになりましたが、ステージング サーバーでテストすると、IE7 レンダリング モードに切り替わります。

奇妙なことに、HTML5 doctype でページをローカルに保存して開くと、IE8 標準モードでレンダリングされます。互換性のある IE7 レンダリングに陥る原因は他にあるはずです。これが何であるかについてのアイデアはありますか?

以下は、私が見ているテストページの頭です:

    <!DOCTYPE html >

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>

    <title>Burton - Mens Clothing - Mens Fashion - Burton Menswear</title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <meta name="description" content="Burton is one of the UK's leading men's clothing &amp; fashion retailers, with a range of men's clothing designed to make you look &amp; feel good. Find formal &amp; casual clothes &amp; accessories for men online at Burton menswear"/>
    <meta name="keywords" content="menswear, clothes for men, clothing for men, men clothes, men's fashion, men's wear, men's clothing online, men's clothes online, men's clothes shop, burton men's, burton menswear, burton uk, burton"/>

    <script type="text/javascript">document.getElementsByTagName('html')[0].className = 'js';</script>

    <link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/screen.css" />
    <link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/print.css" media="print"/>

    <link rel="stylesheet" type="text/css" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/brand.css" />

    <!--[if lt IE 8]>
    <link rel="stylesheet" href="http://eu.burton-menswear.com/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color2/v3/css/ie.css" type="text/css" media="screen, projection">
    <![endif]-->

    <meta http-equiv="content-language" content="en-gb" />

    <link rel="shortcut icon" type="image/x-icon" href="http://eu.burton-menswear.com/favicon.ico" />
    <link rel="search" type="application/opensearchdescription+xml" title="burton.co.uk Search"  href="http://eu.burton-menswear.com/burton-search.xml"/>
    <!-- Start Summit Tag -->
    <script type="text/javascript"> 
  var __stormJs = "t1.stormiq.com/dcv4/jslib/3286_D92B7532_4A18_46A8_864A_5FDF1DF25844.js";
</script>
    <script type="text/javascript" src="http://eu.burton-menswear.com/javascript/track.js"></script>
    <!-- End Summit Tag -->
    <!-- Start QuBit Tag -->
    <script src=//d3c3cq33003psk.cloudfront.net/opentag-31935-42109.js async defer></script>
    <!-- End QuBit Tag -->
    <link type="text/css" rel="stylesheet" href="http://reviews.br.wcstage.arcadiagroup.ltd.uk/bvstaging/static/6028-en_gb/bazaarvoice.css" ></link>

</head>
4

3 に答える 3

16

IE 8 には、ページの HTML コンテンツまたは HTTP ヘッダーに関係なく、ページを互換モードでレンダリングできる設定がいくつかあります。

  1. ページ > 互換表示設定

    • [互換表示でイントラネット サイトを表示する] がオンになっている場合、IE はローカル ネットワーク上のすべてのサイトを互換表示で表示します。(これは、開発中に数回発生しました。)

    • [Microsoft から更新された Web サイト リストを含める] がオンになっている場合、IE は Microsoft から Web サイトのリストをダウンロードし、それらすべてを互換表示で表示します。

    • 「互換表示ですべての Web サイトを表示する」がチェックされている場合は、何が起こるか推測できます。

  2. ツール > インターネット オプション > 詳細設定 > ブラウジング

    • 「互換表示でページ レイアウト エラーから自動的に回復する」がチェックされている場合、IE は、ページのレイアウトが壊れていると判断した場合に互換表示に切り替えることがあります。

  3. 最後に、ページに移動して [ページ] > [互換表示] をクリックすると (またはアドレス バーの互換表示アイコンをクリックすると)、そのページは互換表示で表示されます。

したがって、X-UA-Compatibleそこに入れ、HTML5 のような doctype を使用する価値はありますが (意図が明確になるように)、テストするときは常にこれらの設定を最初に確認してください。

于 2012-11-12T10:55:50.093 に答える
8

これが役立つかどうかはわかりませんが、IE9では次を使用する必要があります。

<!DOCTYPE html>

および次のメタ タグ:

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

これら2つの組み合わせをテストした後、私が見つけたものは次のとおりです。

  • Doctype または Meta タグなし:
    Quirks モード、IE エンジン = 5

  • Doctype のみ:
    標準モード、IE エンジン = 7

  • Doctype および Meta Tag
    Standards モード、IE エンジン = 9

  • メタ タグのみ
    の標準モード、IE エンジン = 9

モードの種類とエンジンを判別する方法:

  • document.compatMode: CSS1Compat= 標準モード、それ以外の場合は quirks モードです

  • document.documentMode: IE がドキュメントのレンダリングに使用しているエンジンを返します


ノート:

  • 通常、Doctype はファイルの最初の行でなければなりません。よくわかりませんが、XML タグを前に付けることができると思います。その前に他のものがあれば、doctype 宣言が壊れる可能性があります。
  • メタタグを配置する必要があります<HEAD>
  • あなたの投稿は 25 日前のものなので、解決策があると思います。それでも、これらの IE9 設定が問題に適しているかどうかはわかりません。それらがIE8で実行可能かどうかを調べwindow.document.compatModeて判断する必要がありますwindow.document.documentMode
  • メタタグをに変更<meta http-equiv="X-UA-Compatible" content="IE=8">
  • メタ タグのみを使用することは可能ですが、doctype なしで使用することはお勧めしません。これにより、XML、CSS、およびスクリプトで問題が発生する可能性があるため

私はこれを理解し、この記事を投稿するのに何時間も費やしたので、誰かが私の研究を実際に利用してくれることを願っています. ソースがあなたと共にありますように...

于 2012-12-08T12:53:55.950 に答える
4

XHTML 1.0 Transitional doctype (仕様で URL とともに使用される場合) と<!doctype html>、IE での「標準モード」のトリガーの両方。これが起こらない場合、doctype の変更とはおそらく関係のない多くの理由があります (URL などの追加情報が利用可能な場合にのみ分析できます)。Activating Browser Modes with DoctypeのIE 8 と IE 9 の複雑さを参照してください。

<!doctype html>実際にマークアップを変更しない限り、変更は無意味で潜在的な問題です。doctype を使用するもう 1 つの理由である検証では、まったく異なる分析が行われ、XHTML 1.0 で有効な構造に関するエラー メッセージが頻繁に表示されます。

于 2012-11-12T11:23:58.053 に答える