强制Internet Explorer 9使用标准文档模式

如何强制Internet Explorer 9使用标准文档模式? 我build立了一个网站,我发现IE9使用怪癖模式来渲染网页。 但我想使用标准模式进行渲染。

<!doctype html> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 

这使得IE的每个版本都使用其标准模式,所以IE 9将使用IE 9标准模式。 (如果你想要更新版本的IE来专门使用IE 9标准模式,那么你可以用Edgereplace9 ,但是很难看出你为什么要这么做)。

对于解释,请参阅http://hsivonen.iki.fi/doctype/#ie8 (它看起来相当混乱,但这是因为IE浏览器在其行为混乱)。

 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

meta标签必须是head标签之后的第一个标签,否则将不起作用。

这个线程有一些非常重要的东西已经被触及,但没有完全解释。 HTML方法(在头部添加元标记)只能在原始HTML或非常基本的服务器页面上始终如一地工作。 我的网站是一个非常复杂的服务器驱动的网站,主页,主题和很多第三方控件等。我发现这些控件中的一部分是通过编程将自己的标签添加到最终的HTML中,浏览器头标签的开头。 这有效地使HTML元标记无用。

那么,如果你不能打败他们,join他们。 对我来说唯一的解决scheme就是在我的母版页的预渲染事件中完成同样的事情:

 Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender Dim MetaTag As HtmlMeta = New HtmlMeta() MetaTag.Attributes("http-equiv") = "Content-Type" MetaTag.Attributes("content") = "text/html; charset=utf-8;" Page.Header.Controls.AddAt(0, MetaTag) MetaTag = New HtmlMeta() MetaTag.Attributes("http-equiv") = "X-UA-Compatible" MetaTag.Attributes("content") = "IE=9,chrome=1" Page.Header.Controls.AddAt(0, MetaTag) End Sub 

这是VB.NET,但同样的方法将适用于任何服务器端技术。 只要你确定这是在页面呈现之前完成的最后一件事情。

把一个doctype作为你的html文档的第一行

 <!DOCTYPE html> 

您可以在这里find有关Internet Explorer文档兼容性的详细说明: 定义文档兼容性

为了防止怪癖模式,定义一个“文档types”,如:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

使IE在IE9文档模式下呈现页面:

 <meta http-equiv="x-ua-compatible" content="IE=9"> 

请注意, "IE=edge"会使IE以最近的文档模式呈现页面,而不是IE9文档模式。

确保你考虑到添加这个标签,

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

可能只允许与最新版本兼容。 这一切都取决于你的图书馆

我尝试了一种替代方法:

按F12键然后,在右侧的下拉菜单中,selectInternet Explorer版本9。

就是这样,它为我工作。

确保你使用正确的文档types。

例如。

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

要不就

<!doctype html>

并阅读并理解IE的兼容模式和开发者工具栏如何工作和设置IE的模式: