在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 前添加注释
- 重写页面以符合标准。这显然是最好的解决方案,但问题页面是一个复杂的地图应用程序,重写将花费几个月的时间。
当我称它为"一个复杂的映射应用程序"时,我应该说它是"一个由框架和表格组成的老鼠窝"。结果表明,框架部分与解决方案相关。
我最终解决了这个问题,把这段代码放在每个页面的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>