我可以在这里澄清一些想法:
如果未指定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上答案 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中关闭兼容模式
更改代码的要点
所以完成了解决问题的行动。
使用<!Doctype html>
确保html文档以此开头。 N:B这并不意味着这必须是HTML的第一行。 php include可以在它之前。
在<head>
使用<meta charset="UTF-8">
<?php header("content-Type: text/html; charset=utf-8"); ?>