在web中覆盖x - ua兼容设置.为特定的页面和框架配置

本文关键字:配置 框架 设置 覆盖 web ua | 更新日期: 2023-09-27 18:15:01

我有一个。net web应用程序,其中包含一个web。强制Internet Explorer关闭兼容模式并使用最新版本的IE:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=Edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

但是,此应用程序包含需要兼容模式的遗留页面。在我的测试中,只有当X-UA-Compatible设置为IE=5时,它才会正确显示。

是否有办法覆盖web。单个页面的配置设置?

在我尝试过的许多不奏效的事情中:

  • 在页面本身包含<meta http-equiv="X-UA-Compatible" content="IE=5" />,作为<head>
  • 之后的第一个标签
  • X-UA-Compatible:IE=5添加到响应头中。不幸的是,它也发送X-UA-Compatible:IE=Edge报头,并且那个"获胜"。
  • 更改<!DOCTYPE >。我尝试了所有的选择。
  • 在DOCTYPE
  • 前添加注释
  • 重写页面以符合标准。这显然是最好的解决方案,但问题页面是一个复杂的地图应用程序,重写将花费几个月的时间。


当我称它为"一个复杂的映射应用程序"时,我应该说它是"一个由框架和表格组成的老鼠窝"。结果表明,框架部分与解决方案相关。

在web中覆盖x - ua兼容设置.为特定的页面和框架配置

我最终解决了这个问题,把这段代码放在每个页面的Page_Load()中,这是这个页面的框架集的一部分(总共大约十几个页面)。

Response.ClearHeaders();
Response.AddHeader("X-UA-Compatible", "IE=5");

我一直假设框架集页面将继承主页面的设置,但显然不是。只是把它放在主页上是不行的,我必须把它放在每个页面/框架上。

您可以尝试使用位置标记…

<location path="YourPage.aspx">
    <system.webServer>
       <httpProtocol>
          <customHeaders>
             <add name="X-UA-Compatible" value="IE=5" />
          </customHeaders>
       </httpProtocol>
    </system.webServer>
</location>