IE总是处于Quirks模式

时间:2011-06-20 18:09:52

标签: html css cross-browser

在网站之后,我的构建总是以怪癖模式加载,然后上升旧版IE的盒子模型错误。

site

我已将文档类型添加为xhtml1-strict.dtd,并且没有空格或BOM字符。当我从开发人员工具将文档模式更改为IE7或IE8标准时,它会正确显示该网站。

我试图在很多方面改变怪癖模式加载,但无法成功。如果你们也不知道如何更改为怪癖模式加载我会赞成如果任何黑客对我可以发布的alligment问题。

谢谢。

3 个答案:

答案 0 :(得分:7)

查看源代码,您的第一行代码是:

<?xml version="1.0" encoding="UTF-8"?>

您需要DOCTYPE作为第一行。

修改:您已删除<?xml...>,但仍有问题。第1行为空白,但第2行包含隐身字符 - U+FEFF - unicode BOM。你需要删除它。

您使用的是服务器端包含还是其他一些可以加入两个文件或以其他方式添加到响应中的服务器技术?

答案 1 :(得分:3)

您的网页开头就像这样:

<?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">

在DTD之前丢失所有(包括xml声明之前的空白行,这些行未正确显示),它应该在标准模式下解析。

另一个解决方案是使用X-UA-Compatible响应标头,如下所示:

X-UA-Compatible: IE=8

(或IE = 7,或IE = 9)

最后,请阅读MSDN documentation on document compatibility - 这是该主题的权威资源。

<强>更新

由于您使用的是PHP,并且源中存在虚假的Unicode BOM,因此几乎可以肯定您的一个或多个PHP源文件包含BOM。您需要在<?php标记之前将保存为而不添加任何其他字符。

为确保全部完成,请编写一个简短的程序,打开PHP文件并读取第一个字节。如果它不是'&lt;',那么可能是错误的。

或者,您可以使用上面提到的X-UA-Compatible标题。

答案 2 :(得分:2)

如果触发严格模式的doctype前面有xml prolog,则该页面以怪癖模式显示。

看起来像代码输出。

<?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">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en" xml:lang="en">

<head>