Влияет ли PHP или Apache на DTD: проблема с отображением XHTML в стандартном режиме IE7 - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть статический HTML (index.html) с DOCTYPE ниже, который запускает стандартный режим в 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>

Затем я преобразую страницу в три PHP-шаблона HTML: header.html.php, index.php, footer.html.php.И header.html.php включает в себя точный DOCTYPE, как указано выше.

Но каждый раз, когда я запрашиваю index.php в IE7, он портит визуализацию.

Я использовал команду 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, но я все еще получаю проблему.

Это проблема с Apache или PHP?У кого-нибудь есть подсказка, чтобы это исправить?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Одна вещь, на которую стоит обратить внимание, - это кодировка, которую возвращает ваш ответ.Если кодировка символов отличается от кодировки по умолчанию (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, и поэтому оно меняет его на более расшатанный тип документа.

Проверяли ли вы документ с помощью валидатора W3C?

0 голосов
/ 13 апреля 2011

Нет, это не проблема apache или php. Это проблема кода, который генерирует ответ.

...