【问题标题】:How to turn on IE9 Compatibility View programmatically in Javascript如何在 Javascript 中以编程方式打开 IE9 兼容性视图
【发布时间】:2012-04-06 19:44:00
【问题描述】:

我需要以编程方式打开 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 中做同样的事情?

提前致谢

【问题讨论】:

  • 您需要这个的原因不是很清楚。你能详细说明一下吗?
  • document.documentMode 是只读的 msdn.microsoft.com/en-us/library/ie/cc196988%28v=vs.85%29.aspx 并且无论如何都需要重新加载,因为它会影响页面的呈现
  • 但是您正在打开自己的 ASPX 页面。为什么页面不能设置meta?我不明白这个问题。

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


【解决方案1】:

AFAIK,这是不可能的。您可以从 JS 中detect the compatibility mode,但据我所知无法设置。

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

  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 - 如果您没有母版页或基页类,那么也许是介绍两者的好时机。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      我相信从客户端影响标头的唯一方法是当您使用 XmlHttpRequest 请求页面时。在页面加载后谈论修改标题对我来说没有意义,这实际上是您的要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多