1

過去数時間、いくつかの問題を修正しようとして、自分自身を混乱させました。

サイトを IE8 で表示すると、Quirks モードになっているように見えます。そのマシンにはアクセスできず、スクリーン プリントしか表示されませんが、混乱を再現するために、開発ツールから Quirks を選択する必要がありました。

サイトはかなり複雑です。各ページの上部で、php 初期化ファイルが呼び出されます。

インデックスは現在次のようになっています。

<?php require'core/init.php';?>
<?php include_once 'include/IE8Etc.php';?>
<!doctype html>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>

IE8Etc と IE=Edge は最近追加されたものです。次に、Doctype が最初に表示されない場合、IE はこのモードに入り、コメントが問題を引き起こす可能性があることを読みました。

これは私が以前に持っていたphpに当てはまりますか?doctype 宣言をそのままにするか、初期化ページの上部に移動する必要があります。私がそれを書いているときでさえ、それはばかげた質問のように聞こえます。どこにいても問題ないと確信していますが、確認する必要があります。

ありがとう。

4

3 に答える 3

1

doctype がページの最初のものである必要があるという質問で言及したポイントは、ブラウザから見たページに適用されます。

出力が生成されない場合、PHP コードの内容はまったく関係ありません。

ただし、PHP が出力を生成している場合 (その出力が空白行にすぎない場合でも)、doctype が無効になります。

したがって、最初に行うべきことは、ブラウザでページを開き、[ソースを表示] オプションを選択することです。ブラウザが受け取る実際の HTML を見てください。doctype の前に何かがある場合は、移動または削除する必要があります。

それが完了したら、次に行うことは、ページをW3C Validatorで実行することです。これにより、ページで発生する可能性のあるその他の HTML エラーについて通知されます。<meta>タグはタグ内にある必要があるため、少なくとも 1 つは<head>ありますが、他のエラーもある可能性があります。一部の HTML エラーによってブラウザーが互換モードになる可能性があるため、バリデーターによって報告されたものはすべて修正する必要があります (ただし、doctype の問題が最も一般的な原因です)。

役立つホップ。

于 2013-08-29T20:30:08.903 に答える
1

問題

両方のスニペットの後の改行は<?php ?>文字としてカウントされます。Internet Explorer が doctype 宣言の前に文字 (空白も含む) を検出すると、互換モードに入ります。EricLaw が正しく述べているように、すべてのメタ タグを head セクションに移動し、php コードを統合することも検討する必要があります。

ソリューション

正しいコードは次のようになります。

<?php
  require'core/init.php';
  include_once 'include/IE8Etc.php';
?><!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <title>Title</title>
于 2013-08-29T19:09:17.593 に答える