Doctype meta和quirksmode

时间:2012-11-21 18:15:15

标签: html xhtml doctype quirks-mode

我可以在这里澄清一些想法:

如果未指定doctype,则调用Quirksmode。

当从localhost提供时,无论doctype如何,IE似乎都会进入quirksmode。请确认一下,有人可以解释为什么会这样。

然而

当从localhost提供并且IE进入quirksmode而不管doctype时,可以通过在头部的第一行包含元标记来覆盖它

<meta http-equiv="X-UA-Compatible" content="IE=edge">

这对我不起作用...我的语法错了吗?

头部中的meta只会在从localhost提供时才会被应用?这是真的,如果是这样的原因。

目前,无论是从本地主机还是通过网络提供服务,FF Chrome Opera等都能正常运行。

但我只是在IE中获得怪癖模式

我的doctype是

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

最后是charset和quirksmode之间有关系吗?

我一直在使用

<meta http-equiv="content-type" content="text/html; charset=utf-8" />       

在apache配置为默认为UTF-8

的apache上

4 个答案:

答案 0 :(得分:1)

Quirks Mode很古怪,你不应该依赖任何特别的东西。触发它的情况取决于浏览器,但是如果您已经看到符合XHTML规范的XHTML doctype要触发它,那么它可能是观察中的错误。你可能有例如doctype之前的一些东西。同样关于IE的神奇meta标签。

您的语法可能有误,但在发布的代码段中没有。

或者问题可能是由doctype嗅探中的某些IE8 and IE9 complications造成的。

charset和Quirks Mode之间没有任何关系。

答案 1 :(得分:0)

两件事,你可以试试IE = 8等......

您可能还想查看doctype;虽然,它看起来是正确的,你可能有隐藏的字符等....尝试使用将显示隐藏字符的基本编辑器。

对于VI,您可以查看:http://www.chrispian.com/quick-vi-tip-show-hidden-characters/

这对我来说是第一步。

答案 2 :(得分:0)

简短回答

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

出错的地方,因为当你的doctype是xhtml时你说它是text/html。您应该使用application/xhtml+xml

更长的答案

在我看来,你还没有正确研究 XHTML究竟是什么。这是一种非常奇怪的文件。 XHTML应该是对传统HTML的改进,但它从来没有真正受欢迎,一般不建议你使用它,除非你有非常具体的原因

看看this web site。一些重要的部分:

  

XHTML 1.1

     

对于1.1版本的XHTML,规范很明确:text / html   不能使用。 XHTML“原生”内容类型   应该使用application / xhtml + xml,而使用通用的XML内容   可以使用application / xml的类型。

     

这种内容类型的汤给我们留下了相当清晰的过程    1.1的行动:如果我们使用XHTML 1.1 2,我们应该服务    application / xhtml + xml作为内容类型。

这是你的具体问题:

  

恐怖!恐怖!

     你已经猜到了。提供包含所有内容的文档   意图和目的XHTML as text / html只是意味着浏览器   将进入纠错模式并处理。

答案 3 :(得分:0)

我想总结一下这个问题的发现。

在IE9中关闭兼容模式

  1. 在IE 9中右键单击工具图标并选择命令栏
  2. 从命令栏中选择工具
  3. 从工具中选择兼容性视图设置
  4. 取消选中以兼容模式显示Intranet站点
  5. 从命令栏选择工具确保未选中兼容性视图
  6. 重新启动浏览器
  7. 更改代码的要点

    • html 5 doctype简化了设置doctype的整个问题。
    • charset和quirksmode之间似乎存在关系的原因是元中添加该字符集的错误使其与doctype冲突。

    所以完成了解决问题的行动。

    1. 忽略localhost quirksmode - 这只在测试时才有意义。
    2. 使用<!Doctype html>确保html文档以此开头。 N:B这并不意味着这必须是HTML的第一行。 php include可以在它之前。

    3. <head>使用<meta charset="UTF-8">

    4. 在php初始化中使用<?php header("content-Type: text/html; charset=utf-8"); ?>