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

时间:2012-03-22 08:58:58

标签: c# javascript asp.net internet-explorer-9

我需要以编程方式启用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中有没有办法做同样的事情?

提前致谢

3 个答案:

答案 0 :(得分:6)

AFAIK,这是不可能的。你可以从JS detect the compatibility mode但是根据我的知识设置它。

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

  1. 如果您在网站中使用母版页,请在母版页中添加元标题(<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">)。
  2. 与#1类似,如果您使用的是通用基页类(一个好的推荐做法),那么您可以将公共基页的元标题注入所有页面。
  3. 最后,您可以使用IIS配置将http标头添加到您的所有响应中。
  4. 例如,对于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 - 如果你没有母版页或基页类,那么也许是介绍两者的好时机。

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

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

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

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