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

Max*_*ion 71 html internet-explorer quirks-mode internet-explorer-9

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

Juk*_*ela 128

 <!doctype html>
 <meta http-equiv="X-UA-Compatible" content="IE=Edge">
Run Code Online (Sandbox Code Playgroud)

这使得IE的每个版本都使用其标准模式,因此IE 9将使用IE 9标准模式.(如果您希望IE的新版本专门使用IE 9标准模式,您可以替换Edge9.但很难理解为什么会这样.)

有关解释,请参阅http://hsivonen.iki.fi/doctype/#ie8(它看起来相当混乱,但那是因为IE的行为很混乱).

  • 如果您的内容加载到iframe并且父窗口没有指定doctype,则此方法无效.它将跟随将怪癖模式应用于iframe.我讨厌微软.这里还有一个链接到微软网站,谈论这个答案.http://msdn.microsoft.com/en-us/library/ie/hh920756(v=vs.85).aspx (10认同)

小智 18

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)

元标记必须是head标记之后的第一个标记,否则它将不起作用.

  • 我总是想知道当某天需要另一个元标记时,会发生什么,也必须放在所有其他元标记之前...... (4认同)

小智 10

这个线程有一些非常重要的内容已被触及但尚未完全解释.HTML方法(在头部添加元标记)仅在原始HTML或非常基本的服务器页面上一致地工作.我的网站是一个非常复杂的服务器驱动的网站,包含母版页,主题和许多第三方控件等.我发现其中一些控件是以编程方式将自己的标签添加到最终的HTML中,这些标签被推送到头标记开头的浏览器.这有效地使HTML元标记无效.

好吧,如果你不能打败他们,加入他们.对我有用的唯一解决方案是在我的母版页的预渲染事件中做同样的事情:

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
Run Code Online (Sandbox Code Playgroud)

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


ina*_*inc 6

将doctype作为html文档的第一行

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关Internet Explorer文档兼容性的详细说明:定义文档兼容性


Sup*_*uck 6

要防止怪异模式,请定义'doctype',如:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

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

<meta http-equiv="x-ua-compatible" content="IE=9">
Run Code Online (Sandbox Code Playgroud)

请注意,"IE=edge"将使IE呈现具有最新文档模式的页面,而不是IE9文档模式.