【问题标题】:Force IE8 or IE9 document mode to standards强制 IE8 或 IE9 文档模式为标准
【发布时间】:2012-12-03 11:41:45
【问题描述】:

好吧,很抱歉在这里直言不讳,但过去 2 年我一直在 IE 8 和 IE9 上进行开发,但似乎无法做到这一点。我在 abhor 公司工作并为他们的网站开发。出于某种原因,IE8 或 IE9 默认为较低的文档模式,如 ie7 或 ie8。我什么都试过了……

1) 放置 HTML 5 文档类型,仅此而已。根据微软的说法,这应该足够了 2) 将html5 doctype 和x-ua-compatible 元标记放在页面标题下的第一个位置,并分别设置为edge 或IE8 或IE9。

我的页面是这样的

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7">
<![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-  ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <!     [endif]-->
<!--[if gt IE 8]> <html class="no-js"> <!   [endif]-->

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

这真的令人沮丧,因为我读到的所有内容都说它应该有效。微软声称这将起作用,甚至只是设置 HTML 5 doctype 将起作用。我听说要设置一个 http 标头来修复,但老实说,微软是认真的吗?我很难相信开发人员需要更改他们的 apache 设置以添加 http 标头以使页面呈现我是标准模式

有人可以帮我吗?我错过了什么???我真的开始越来越讨厌微软了!!!!!!

更新::

我最近发现我的公司已选中“在兼容性视图中显示 Intranet 站点”,看起来如果我取消选中它,它就会正常工作。但是,这不是解决方案!在我阅读的所有地方,我看到如果您看到与 X-UA 兼容的元标记或 http 标头,它应该优先。好吧,这完全是个谎言。其他人有答案吗??我知道外部用户会很好,但是我的业务正在对此进行测试,他们正在提出问题,因为它们是内部的,很难说服他们并告诉他们取消选中该框。这并没有给他们很好的感觉。另外,我不能让桌面工程团队删除它,因为它已经到位,因为内部较旧的应用程序不是为支持 IE8,9 而编写的,所以他们需要这个。

感谢任何帮助。谢谢!

谢谢

【问题讨论】:

  • 这是同一家公司的 samw 浏览器,它有一个著名的“错误”,称为 Trailing Comma of DEATH!!! 也许不是你。
  • 但是当我在同一个浏览器中访问其他网站时,我看到模式设置为标准,所以我做错了什么???
  • 您是从 HTML5 样板开始的吗?您能否提供一整页您知道无法正确呈现的标记?
  • 你的条件句都搞砸了。看看他们;当我将其与其余 HTML5 响应样板文件一起放入文件时,它会显示。如果我把它留在里面,空白页。看起来您正在尝试注释条件。我不认为你可以(?)。
  • 这对我来说就像一个巨大的黑客!非 IE 浏览器会发生什么?!那么没有&lt;html&gt;-tag 可用...

标签: html cross-browser internet-explorer-9 ie8-browser-mode


【解决方案1】:

代码的第 5 行和第 6 行有错误,正如 @JaredFarrish 在评论中所说,导致页面在 IE 上显示为空白。

在第 5 行的末尾,删除空格

<!     [endif]-->

第6行末尾,改

<!--<!   [endif]-->

<![endif]-->

在您的实际页面上,稍后的代码中可能有一些内容可以阻止格式错误的构造在 IE 上导致的跳过。

目前还不清楚是什么让 IE 进入了 Quirks 模式。需要更多信息来解决这个问题。它甚至可能取决于页面所在的域,因此披露 URL 可能会有所帮助。一般情况见IE8 and IE9 Complications(在设置浏览器模式中)。

【讨论】:

  • 我以为那句话是“几代人都遇到了 IE8 和 IE9 并发症”。我可以支持它。
【解决方案2】:

我们的 Intranet 也被锁定,所有 Intranet 站点都使用 Compatibility View,并使用 IE 8,因为它们都是 Windows XP。

我发现,一旦 IE 8 开始处理标准样板条件 cmets(以确定将哪个类附加到 &lt;html&gt; 标签),游戏就结束了:IE 决定此时它在兼容模式下运行(IE 7) 我无能为力。

我发现通过将&lt;meta&gt; 标记紧跟在&lt;!DOCTYPE&gt; 标记之后,这一切都完全符合预期:

<!DOCTYPE HTML>
<meta http-equiv="x-ua-compatible" content="IE=Edge">

在我看来,这似乎不是很“标准”,但它确实有效。我希望有任何替代方法可以将&lt;meta&gt; 标签放入&lt;head&gt;,就像我尝试了几个小时一样。

【讨论】:

    【解决方案3】:

    拉尔夫培根的回答只是为我解决了这个问题。我们使用的 html5 样板文件没有任何问题。 如果你的内网使用的是兼容模式,那么你应该放置这个

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

    之后

    <!DOCTYPE HTML>
    

    总的来说,你的标题应该是这样的:

    <!DOCTYPE html>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]-->
    <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]-->
    <!--[if IE 8]>         <html class="no-js lt-ie9" lang=""> <![endif]-->
    <!--[if gt IE 8]><!-->
    <html class="no-js" lang="en">
    <!--<![endif]-->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 2011-02-05
      • 2013-08-03
      • 2013-05-26
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      相关资源
      最近更新 更多