0

以下にDOCTYPEを含む静的HTML(index.html)があり、IE7の標準モードがトリガーされます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

次に、ページを3つのPHP HTMLテンプレート(header.html.php、index.php、footer.html.php)に変換します。また、header.html.phpには、上記の正確なDOCTYPEが含まれています。

しかし、IE7でindex.phpを要求するたびに、レンダリングが台無しになります。

このコマンドjavascript:alert(document.compatMode)を使用して、IE7とFF3でテストしました

静的なhtmlページの場合、IE7とFF3の両方でCSS1Compatが提供されます。これは、私が期待したモードです。しかし、PHPで生成されたページの場合、FF3ではCSS1Compatが提供され、IE7ではBackCompatが提供されます。

問題は次のとおり です。IE7からページをダウンロードしたところ、DOCTYPEが<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">アドレスなしになっていることがわかりました。

しかし、同じPHPで生成されたページをff3とchromeでダウンロードすると、DOCTYPEは正しくなります<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

ページをテストすると、当然のことながら、W3Cバリデーターが取得するソースコードの最初の行は# <!-- A customized tag to distinguish different pages --> # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

そして、W3C検証は空の最初の行を示します。

すべての静的PHPファイルとCSSファイルのBOMを削除しましたが、それでも問題が発生します。

これはApacheまたはPHPの問題ですか?誰かがこれを修正する手がかりを持っていますか?

ありがとう。

4

2 に答える 2

2

確認すべきことの 1 つは、応答が返す文字エンコードです。文字エンコーディングがデフォルト (UTF-8 または -16) 以外の場合は、xml 宣言を含める必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

他のブラウザで適切なコンテンツを取得しているため、IE のチョークを引き起こしている何かがあると思われ、より緩い doctype に変更しています。

W3C バリデーターを使用してドキュメントを検証しましたか?

于 2011-04-13T05:17:00.253 に答える
0

いいえ、これは apache や php の問題ではありません。応答を生成するのはコードの問題です。

于 2011-04-13T04:26:48.813 に答える