我有一个带有 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>
然后我将页面转换为三个 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">
了没有地址。
但是在ff3和chrome中下载相同的PHP生成页面,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 的问题?有人有解决这个问题的线索吗?
谢谢。