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


Answers:


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

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

有关说明,请参见http://hsivonen.iki.fi/doctype/#ie8(它看起来很杂乱,但这是因为IE的行为杂乱)。


11
如果您的内容正在加载到iframe中且父窗口未指定doctype,则此方法将无效。还将把怪癖模式也应用于iframe。我讨厌微软。另外,这里是指向此答案的Microsoft网站的链接。msdn.microsoft.com/zh-CN/library/ie/hh920756(v=vs.85).aspx
teewuane

如果您DOCTYPEHTML标记之前的声明之外还有其他内容,那么它也不起作用。
暗恋

1
这个答案在不久前是正确的,但是现在IE10已经发布了,它将在将来渲染,并且将来将渲染任何最新的IE。请参阅下面的SuperDuck的答案以显式在IE9中呈现。
DrCord

这对我的IE9的64位副本(版本9.0.8112.16421)没有影响。(“ HTML1115:兼容X-UA的META标签('IE = 8'),因为文档模式已经完成。”,无论meta标签在文档中的位置如何)
15ee8f99-57ff-4f92-890c-b56153

...必须调用Response.AddHeader()(在这种情况下,卡在传统的ASP上)或其他等效项。谁知道在我的桌面上IE10,IE9会发生什么,但我的或其他任何东西……
15ee8f99-57ff-4f92-890c-b56153 2013年

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

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


4
我总是想知道当有一天需要另一个也必须放在其他所有
元素

您确实希望将元字符集尽可能靠近文档的开头。我猜两者仍然可以容纳足够少的字节数,以与实际的用户代理一起使用。
Mikko Rantalainen

10

关于此线程,有一些非常重要的内容已被涉及但尚未完全解释。HTML方法(在头部添加一个meta标记)仅在原始HTML或非常基本的服务器页面上始终有效。我的网站是一个非常复杂的服务器驱动的网站,具有母版页,主题背景和许多第三方控件等。我发现,其中一些控件是通过编程方式将其自己的标签添加到最终HTML中的,这些标签已被推送到浏览器位于head标签开头。这实际上使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

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


我遇到了同样的问题,我在网站(ewwww)中使用了DNN,这是解决该问题的唯一方法,其他所有方法都假定您可以直接控制HTML中的<head>标记。
丹·雷森

6

将doctype作为html文档的第一行

<!DOCTYPE html>

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


@ inancsevinc:我的aspx页面已经具有<!DOCTYPE html>,并且呈现时仍在使用IE7文档模式。因此,从这个意义上讲,仅您的建议并不能解决我的问题。对我来说,诀窍是按照Jukka K. Korpela的建议,在其下面直接添加<meta http-equiv =“ X-UA-Compatible” content =“ IE = Edge”>。我确实感谢您的建议可能是有效的,但我只是不明白为什么仅凭这一点并不能将IE强制转换为IE9模式。
leoinlios

6

为了防止出现怪癖模式,请定义“ doctype”,例如:

<!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文档模式呈现页面。


3

确保考虑到添加此标签,

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

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



0

确保使用正确的文档类型。

例如。

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

要不就

<!doctype html>

阅读并了解IE的兼容模式和开发人员工具栏如何工作以及IE的设置模式:


0

我遇到了这样的问题,例如我的主页index.jsp包含以下行,但是即使在IE中渲染也不正确。找到了问题,我将代码添加到了index.jsp中包含的所有文件中。欢呼!有效。

因此,您需要在页面中包含的所有文件中添加以下代码,否则将无法正常工作。

    <!doctype html>
    <head>
      <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    </head>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.