0

我试图弄清楚为什么我的页面没有正确呈现。

我注意到当我的页面显示为“文档模式:IE7 标准”或“文档模式:IE8 标准”时,页面无法在浏览器中正确呈现。页面导航似乎有问题,如下所示:

不正确的渲染

当我更改为“文档模式:IE9标准”时,页面正确显示如下:

正确渲染

知道如何解决这个问题吗?谢谢你。

4

2 回答 2

3

您的代码显然使用了 IE8 或 IE7 不支持的某些 CSS 样式或其他浏览器功能。

你还没有给我们任何代码,所以我不能确切地告诉你这些特性是什么,但是如果你需要支持这些旧浏览器,那么你需要解决这个问题。

第一件事:您提到您在 IE9 兼容模式下看到了这一点。如果不需要支持IE7/8,可以通过指定x-ua-compatiblemeta标签来防止IE9进入兼容模式,如下:

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

这将强制 IE 以可用的最佳渲染模式运行。所以 IE9 将使用 IE9 标准模式,而不是兼容模式。

但是,如果您确实需要支持 IE7 和 IE8,则需要执行以下操作之一:

  • 修复您的代码以使用浏览器。
  • 修复浏览器以使用您的代码。

如前所述,您还没有提供代码,所以我无法帮助您解决第一点,但第二个选项可能值得考虑。

有大量的 Javascript hack 旨在在旧浏览器中模拟新的浏览器功能——尤其是 IE。这些黑客被称为“polyfills”,你可以在这里找到一个相当全面的列表:https ://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

如果你能确定是哪个浏览器功能破坏了你的代码,你可以在你的代码中实现相关的 polyfill,希望事情会突然开始工作。不同的 polyfill 以非常不同的方式工作,所以在不了解更多细节的情况下,我真的无法提供更多帮助,但它们中的大多数都有足够好的文档来帮助你入门。

最后,要注意一点:如果您正在使用 IE9 的兼容模式测试您的站点是否可以在 IE7/8 中运行,请小心 - 兼容模式存在许多已知问题,导致它们与IE7 或 IE8 的真实副本。如果你没有看到真实的东西,你就不能绝对肯定你的代码在这些浏览器中工作。兼容模式不够好,无法确定。

希望有帮助。

于 2012-10-13T20:31:13.500 回答
0

每个版本的 Internet Explorer 对当时的标准都有完全不同的支持级别。一般来说,每个以后的版本都对当时的标准有更好和更完整的实现,但是,IE 以缺失、不完整或不正确的标准实现而闻名。

当您更改显示设置以反映旧版本时,您也会失去最新版本所拥有的新支持。例如,IE7 不支持 CSS3 功能,因此无法正确显示这些功能。

不要忘记,能够切换到较旧的文档模式背后的想法是双重的。对于普通用户来说,它是能够正确显示一个专门为旧版浏览器设计的页面(就像它是当前浏览器时一样)。对于开发人员/网站管理员,测试对可能仍在运行旧版本浏览器的旧机器上的用户的支持。

另请注意,如果您需要更具体的帮助,那么您可能希望在代码中进行编辑或使用 JSFIDDLE.net 等网站提供链接

于 2012-10-13T20:13:56.033 回答