65.9K
CodeProject 正在变化。 阅读更多。
Home

强制 IE11 在 frameset 中引用的网页以 Edge 文档模式加载,而不是怪异模式

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015年10月4日

CPOL

3分钟阅读

viewsIcon

33856

本技巧解释了如何为现有内网(企业)应用中框架集引用的新添加页面安排并应用正确的 DOCTYPE 和 X-UA-Compatible meta 标签。

引言

本技巧是一次经验分享,讲述了我们尝试的所有方法,以及最终我们的开发团队如何成功地强制 IE11 以 Edge 模式加载企业应用中新开发的网页。我们尝试了 X-UA-Compatible 的各种组合,但在最终有效的修复方案之前,新页面始终以怪异模式加载。编写本技巧的一个重要原因是我们的应用程序并非新应用程序,最初是在 ASP.NET 1.1(使用 VS2003)中开发的,然后迁移到 ASP.NET 3.5(VS2008),目前已经使用 ASP.NET 4.0(使用 VS2010)几年了。因此,如果您尝试同样无效的方法,网上提供的大部分技巧都无法直接应用。

感谢我的朋友 Saurav Kumar,他在几分钟内找到了解决方案,指出了正确的原因,并在关键时刻拯救了项目。

背景

此应用程序具有一个 Frameset,其中一个 Frame 加载应用程序页面,而另一个加载导航菜单和标题等页面。由于该应用程序是使用Visual Studio 2003开发的,因此当时开发的所有页面都具有 DOCTYPE 作为HTML 4.0 Transitional。目前,此应用程序已迁移到 ASP.NET 4.0 并在 Visual Studio 2010 中维护。所有页面都可以在 IE7、IE8 和 IE9 中正常工作,因为它们已经过怪异模式的测试。由于一些新的需求,我们引入了 JQGrid,它无法在怪异模式下工作。因此,我们将 X-UA-Compatible meta 标签与 IE=Edge 一起应用于这些新页面,并且一切都在 IE9 中正常工作。

最近,IE11 开始在企业中推广,我们必须证明我们的应用程序可以在此环境中正常工作。我对 X-UA-Compatible meta 标签非常有信心,因为过去我也在另一个项目中使用过它,并且我们已经在 IE9 中使其正常工作。但令我惊讶的是,新页面在 IE11 中以怪异文档模式加载,新的 JQgrid 控件停止工作。我们尝试了几种方法,但最终一个非常简单的解决方案对我们有效,这就是我在这里分享的内容。

Using the Code

我正在添加最终对我们有效的代码。我使用了正确的 DOCTYPE 和 X-UA-Compatible 来使网页在 IE11 中正常工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
</head>

注意顺序,它至关重要。我知道我也可以使用 <!DOCTYPE html>,但现在我坚持使用对我有用的方法。

关注点

复制+粘贴有时不会让您看到预期的结果,并且通过对工作和不工作的内容进行详细比较总是有帮助的。就我而言,我尝试了很多方法,甚至使用各种组合进行了一个 POC,其中一些在 IE11 中有效,但同样的方法在迁移的项目中无效,因为要创建一个新页面,我没有使用 VS 2010 模板,而是复制粘贴了一个来自 VS 2003 的迁移页面,该页面具有旧的 DOCTYPE见下文)定义,导致 IE11 以怪异模式呈现我的页面。

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

以下链接包含有关 Internet Explorer 如何决定文档模式的有趣图表

历史

  • 2015 年 10 月的初始版本 1.0
© . All rights reserved.