Internet Explorer的条件文档类型

时间:2014-03-20 11:21:02

标签: javascript html internet-explorer internet-explorer-8 doctype

我的应用程序存在问题,因为它正在使用IE 8和IE 11,因为我的客户很少使用IE8,很少有人使用IE 11.我得到一些布局相关的问题,因为doctype标签。

当我在主页面中添加此doctype标记时,我的布局在IE 8中失真,但在IE 11中工作正常

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

同样,当我删除此标记时,它适用于IE 8,但不适用于IE 11。

2 个答案:

答案 0 :(得分:0)

尝试在<head>上放置兼容X-UA的元标记。它将使IE渲染html与最新的布局引擎。

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

答案 1 :(得分:0)

首先,检查浏览器用于显示页面的模式。 IE8的所有IE版本都带有一个开发工具窗口,可以通过按F12打开。这将显示浏览器使用的模式。如果它不是“IE8标准”(对于IE8)或“Edge”(对于IE11),那么你需要问问自己为什么。

了解浏览器的模式将帮助您解决问题。

关于doctype,此处只有一条规则:始终始终包含doctype。您不应该在今天的网页上编写完全没有文档类型的HTML页面。

如果您没有doctype,那么IE(所有版本和其他浏览器)也会将页面置于“Quirks模式”。这将导致页面布局出现问题,并导致它在不同浏览器中的工作方式不同(甚至在同一浏览器的不同版本中)。应该尽可能避免怪癖模式,因此你应该总是有一个doctype。

如果您可以选择使用哪种doctype,请考虑使用HTML5 doctype:<!DOCTYPE html>

理论上,您使用的几乎任何(有效)doctype都应该是相同的:即将页面置于标准模式。您使用的doctype是XHTML Transitional doctype。这应该没问题,但同样HTML5文档类型也可以正常工作,而更简单的doctype字符串可以降低拼写错误使页面无效并破坏页面的可能性。

doctype必须是页面上的第一件事。之前没有评论或空格。这可能导致某些版本的IE将doctype视为无效。

使用有效的doctype,您不应再将Quirks模式显示为开发工具中的模式。

接下来要做的是通过W3C Validator运行HTML代码。这将返回您的代码中可能包含的任何HTML语法错误的详细信息。此处显示的错误通常是导致跨浏览器怪异的事情,因此您应该修复验证程序中报告的任何内容。

如果IE的浏览器模式显示为兼容模式,可能会出现这种情况的原因有很多,但您通常可以通过确保HTML <head>包含以下行来解决此问题:

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

'edge'设置告诉IE的所有版本使用其最佳可用渲染模式。除非您有特定的理由使用特定的兼容模式,否则您永远不需要为此标志使用任何其他值。

为了进一步阅读,我written a detailed article解释了如何将IE保持在标准模式以及为什么这是一件好事。

我希望这会有所帮助。