Internet Explorer 8忽略了/注释了DOCTYPE。

3
我正在尝试让我的Web应用在IE8中正常运行。某些元素的偏移和位置存在问题。
该应用程序在Chrome、Safari、Firefox和IE9/10中工作正常,但是当我将“文档模式”设置为IE8时,这个<!DOCTYPE html>会被注释掉,变成<!-- DOCTYPE html -->。如果我将“文档模式”改回IE9,它就可以正常工作。
我已经尝试使用其他声明。
<!DOCTYPE>

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

但是我在IE8中得到了相同的结果,即有注释字符串。

我该如何让IE8接受doctype?

更新:

我认为你是对的Jukka K. Korpela,我现在注意到即使我打开google.com它也在IE8中有注释的doctype。

我在IE9中的应用程序:

这是我在IE9中的应用程序外观

我在IE8中的应用程序:

这是我在IE8中的应用程序外观

偏移量在IE8中为-250。


你在 <!doctype html> 后面是否包含了 <html> 开始标签?尝试参考 HTML5 Boilerplate 进行交叉引用。 - blend
是的,在doctype之后有<html>标签,结果相同。我会尝试使用Boilerplate。 - onetwo12
HTML5 Boilerplate也没有帮助。 - onetwo12
2
请指明观察到的问题以及为什么您认为它们取决于忽略doctype。在IE10上,当您将“文档模式”设置为IE8时,doctype会显示为已注释。这只是IE开发人员工具中的怪异现象。 - Jukka K. Korpela
问题是由于未关闭的div标签引起的。其他浏览器可以正常工作或忽略它,但IE8不行。 - onetwo12
显示剩余2条评论
1个回答

1

<!DOCTYPE html>可以使IE进入标准模式。

它不能正常工作的最常见原因是您在其前面有其他内容。doctype必须是页面中非常第一件事情,即使在它上面有空格也会使它无效。

此外,如果您的文件以UTF-8编码保存,请确保它是“UTF-8 Without BOM”,因为文件开头的不可见BOM(字节顺序标记)也可能具有相同的影响。

希望这有所帮助。


我认为目前使用的浏览器中没有任何证据表明HTML文件中的BOM会导致任何问题。有许多谣言,它们可能会造成一些伤害,因为BOM实际上在确保文档被视为UTF-8编码方面非常有用。 - Jukka K. Korpela
@JukkaK.Korpela:我现在无法测试,因为我手头没有IE8(而且IE9/10根本没有空白问题)。我可以说,我自己遇到过BOM的这个问题,并通过重新保存而不带BOM来解决了它,所以我知道这是一个问题。关于具体情况,我不能告诉你更多,因为那是一段时间之前的事情,但我确实看到它发生过。我不同意BOM有用的说法:我见过它引起编码问题的次数比解决问题的次数还要多;每当你看到字符时,那就是一个不受控制的BOM,并且它经常出现 - Spudley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接