【问题标题】:IE8 and quirks modeIE8 和怪癖模式
【发布时间】:2009-08-07 14:36:47
【问题描述】:

IE8 是否像 IE6/7 一样在怪异模式下运行?

我有一个网页,其中包含一些真正奇怪的代码。内容以填充和负边距为中心。

它在 IE6/7 和其他浏览器中可以正常工作,但在 IE8 中,内容区域的宽度是原来的一半并且不居中(怪癖模式的标志)。

源代码在 DOCTYPE 之前有三个空行。我知道这会使 IE6 进入怪癖模式。还会影响IE8吗?

我无权访问源代码,因此无法删除这些行来测试它。

【问题讨论】:

  • 保存在您的计算机中并编辑源代码。看看剥离那些空白行是否有效。怪癖模式应该像瘟疫一样避免。
  • 当您在不确定的页面上时,只需在浏览器窗口中粘贴以下内容 - javascript:alert(document.compatMode);这应该告诉你当前的模式。
  • s/浏览器窗口/浏览器地址栏
  • @Emily,如果您想快速解决问题 - 请使用 IE8 的兼容模式。要永久修复它 - 您需要修改 CSS。使用 minimum-width 属性时,在 IE8 下也需要指定宽度。您只需要添加一行代码,页面在 IE8 中就可以正常显示:文件:structures.css,第 13 行:宽度:1000px;
  • 这解决了我的怪癖模式问题:*.com/questions/6294301/…

标签: html css xhtml internet-explorer-8


【解决方案1】:

将文档类型更改为 HTML 5 应该可以解决一些问题。我在使用 Strict doctype 的 IE8 中遇到了最小宽度问题。

所以改变了这个:

ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

至此:

请看这里:http://davidnaylor.org/blog/2008/09/ie8-and-max-width.html

【讨论】:

    【解决方案2】:

    运行一些可以在here 找到的快速测试似乎表明空行不应将 IE8 置于 Quirks 模式(这与每个人似乎都混淆的兼容模式不同)。

    我写了一篇关于 IE8/7 here 的不同模式令人难以置信的混乱的细分,我什至没有在细分中包括 Quirks Mode。关于 Quirks 模式的详细说明可以在 here 找到(不是针对原始问题,但其他人可能会觉得它很有趣。)

    【讨论】:

    • 啊...他们的文档类型是 根据您的图表,这将使 IE8 进入怪异模式。
    • 注意:链接 #2(令人难以置信地混淆 IE8/7 的不同模式)不再有效。
    【解决方案3】:

    今天,我将 DOCTYPE 从 XHTML v1.0 (Strict) 更改为 HTML5。我在某处读到,即使 IE 还不能识别 DOCTYPE,它们也会以符合标准的模式呈现页面。

    当我在 IE8 中查看时,整个页面看起来很糟糕(我们有相当多的 CSS 和其他样式)。过了一段时间,我才意识到 CSS 甚至 IE8 没有任何“错误”。但是,它是在 quirks 模式下渲染的。

    无意中,我在此处发布的问题中找到了答案,特别是这条评论:“源代码在 DOCTYPE 之前有三个空行。我知道这会使 IE6 进入 quirks 模式。它也会影响 IE8 吗?”

    我不知道空行,但是当我进行更改时,我使用了一个 javascript 注释来“保留”我的旧 DOCTYPE 语句(它高于新的 HTML5 DOCTYPE)。一旦我删除了这些行(可能包含一两行空白行),我的汗水就停止了,IE8 以符合标准的模式呈现。

    【讨论】:

    • 你刚刚为我节省了很多小时的黑客工作; razor 将 @using System.Web.Optimization 放在 Doctype 之上,然后瞧,它在 IE8 中淘汰了所有样式。我把它移到下面一行,一切都整理好了!谢谢!
    【解决方案4】:

    是的。 Internet Explorer 的 quirks 模式是 IE5.5。当出现怪癖模式时,IE6/7/8 切换回 5.5。因此,由于它在 IE6/7 中运行良好,所以它不是怪癖模式。 IE8 中有一个“兼容性视图”按钮来解决这个问题。但这对我来说不是一个好的解决方案。您必须检查您的 CSS 代码。

    【讨论】:

    • 但是 IE6/7 不应该也处于怪癖模式,因为空行在 DOCTYPE 之前?在兼容模式下看起来不错。它是在 IE6 中开发的,我认为他们以某种方式补偿了怪癖模式,现在由于它试图遵循标准(或其中一些标准),因此 IE8 正在抛出一个循环。
    • @Emily,不,它不会让 IE8 进入怪癖模式。您可以更改代码以使其在 IE8 中正确呈现,也可以使用其中一种兼容模式。它有 6 种模式,由于您的网站在 6/7 下运行良好,您可以添加以下 标签: 强制IE8 在标准模式下使用标准 IE7 指令。怪癖模式将是 5.5。
    【解决方案5】:

    IE8 有一个兼容模式,它应该像 IE7 那样处理页面。您是否尝试过以兼容模式查看页面?

    【讨论】:

    • 页面在兼容模式下看起来不错。
    【解决方案6】:

    您能否发布指向该页面或某些 HTML 本身的链接?您可以尝试添加元标记以强制兼容模式吗?

    http://www.ditii.com/2008/08/28/ie8-standards-mode-and-ie7-compatibility-mode/

    或了解更多信息:

    http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx

    【讨论】: