【问题标题】:IE always in Quirks modeIE 始终处于 Quirks 模式
【发布时间】:2011-06-20 18:09:52
【问题描述】:

我构建的以下站点始终以怪癖模式加载,这会引发旧 IE 的框模型错误。

site

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

我尝试以多种方式更改怪癖模式加载,但未能成功。如果你们也不知道如何更改为怪癖模式加载,如果可以发布对我遇到的对齐问题的任何破解,我会很高兴。

谢谢。

【问题讨论】:

    标签: html css cross-browser


    【解决方案1】:

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

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

    您需要DOCTYPE 成为第一行。

    编辑:您已删除 &lt;?xml...&gt;,但仍有问题。第 1 行为空白,但第 2 行包含一个不可见字符 - U+FEFF - unicode BOM。您需要删除它。

    您是否正在使用服务器端包含或其他可能连接两个文件或添加到响应中的服务器技术?

    【讨论】:

    • 明确地说,他的所作所为是完全有效和正确的。与往常一样,这对于 IE 来说是一个长期存在的问题。
    • 我什至尝试过..我现在已经在第一行上传为 doctype
    • @Harshana - 您将DOCTYPE 作为第三行,紧随两个空白行之后。尝试删除前两行。
    • @Harshana - 在我的测试中,文档类型之前的正常空格(即换行符和空格字符)很好。但是,你有一个空行,然后在第二行你有一个不可见的字符,我猜它是一个 unicode 字节顺序标记。如果你摆脱了那个角色,它就会起作用。
    • @Harshana - 查看您的源代码时,我注意到我必须按两次箭头键才能使光标从第 2 行移动到第 3 行。您实际上可以从查看源代码窗口复制该字符并将其粘贴到 JavaScript 控制台中。运行 "".charCodeAt(0)(粘贴不可见字符)返回 65279,这确实是 Unicode BOM (U+FEFF)。
    【解决方案2】:

    您的页面完全像这样开始:

    <?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。您需要保存它们&lt;?php 标记之前没有 BOM 和任何其他字符

    为确保您掌握了所有内容,请编写一个简短的程序来打开 PHP 文件并读取第一个字节。如果不是'

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

    【讨论】:

    • Jon..我已经更改了源,但它仍然以怪癖模式加载
    • @Harshana:我已经更新了答案。请仔细阅读
    【解决方案3】:

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

    看起来像代码输出。

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

    【讨论】:

    • xml prolog 的具体问题仅与 IE6 有关。但如果第一件事不是 doctype,那么仍然是所有 IE,然后它们就会出现怪癖。..
    • 确实,它是在 IE 6 中引入的,但仍然与所有其他 IE 相关。感谢您提出完整的建议! :)
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 2013-07-30
    • 2011-04-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多