如何在Javascript中以编程方式打开IE9兼容性视图

本文关键字:方式打 IE9 兼容性 视图 编程 Javascript | 更新日期: 2023-09-27 18:28:33

我需要以编程方式打开IE兼容性。

我知道这在C#中有效:

Page.Header.Controls.AddAt(0, new HtmlMeta { HttpEquiv = "X-UA-Compatible", Content = "IE=EmulateIE7" });

我的问题是我所有的窗口都显示在JS函数中:例如:

function openRadWin(idAgir) {
    radopen("DemandesEnAttente_Estimate.aspx?id=" + idAgir, "RadWindow1");
}

所以我的问题是:在JS中有什么方法可以做同样的事情吗?

提前感谢

如何在Javascript中以编程方式打开IE9兼容性视图

AFAIK,这是不可能的。你可以从JS中检测兼容性模式,但据我所知,设置它是不可能的。

至于你的问题,通常你可以使用几个解决方案:

  1. 如果您在站点中使用母版页,请在母版页中添加元标头(<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
  2. 与#1类似,如果您使用的是一个通用的基本页面类(这是一个很好的推荐做法),那么您可以将通用基本页面的元标题注入到所有页面中
  3. 最后,您可以使用IIS配置将http标头添加到所有响应中

例如,对于IIS7/IIS7.5,可以使用web.config

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

我建议#1或#2——如果你没有母版页或基本页类,那么也许是时候介绍两者了。

您的C#示例所做的是将以下元标记添加到html页面:

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

如果您在运行JS代码的页面上手动执行此操作,它应该可以工作。

您可以尝试将此HTML标记添加到任何需要兼容性的页面的顶部:

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

这样就不需要JavaScript解决方案了。当然,如果您能够更改HTML,那么最好的解决方案就是修复页面,使其不需要向后兼容性。

我认为,从客户端影响头的唯一方法是使用XmlHttpRequest请求页面。对我来说,在页面加载后谈论修改页眉是没有意义的,这实际上是你所要求的。