繁体   English   中英

Internet Explorer的条件文档类型

[英]Conditional Doc Type for Internet Explorer

我的应用程序在IE 8和IE 11上运行时出现问题,因为很少有客户使用IE8,很少使用IE11。由于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中却不能。

尝试将X-UA兼容的meta标签放在<head> 它将使IE使用最新的布局引擎呈现html。

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

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

了解浏览器所处的模式将帮助您更多地了解问题。

关于doctype,这里只有一个规则:总是始终包括doctype。 您不应该在当今完全没有文档类型的Web上编写HTML页面。

如果您没有doctype,则IE(所有版本以及其他浏览器)都将页面置于“ Quirks模式”。 这将导致您的页面布局出现问题,并使它在不同的浏览器(甚至在同一浏览器的不同版本)中的工作方式也不同。 应尽可能避免使用怪癖模式,因此您应始终具有doctype。

如果可以选择使用哪种文档类型,请考虑使用HTML5文档类型: <!DOCTYPE html>

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

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

使用有效的文档类型后,您将不再需要将Quirks模式显示为dev工具中的模式。

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

如果IE的浏览器模式显示为“兼容”模式,则可能有多种原因,但是通常可以通过确保HTML <head>包含以下行来解决此问题:

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

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

为了进一步阅读,我写了一篇详细的文章,解释了如何将IE保持在标准模式下以及为什么这是一件好事。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM