【问题标题】:Force IE8 Into IE7 Compatiblity Mode强制 IE8 进入 IE7 兼容模式
【发布时间】:2010-11-04 02:53:24
【问题描述】:

有没有办法使用 .NET 或 Javascript 强制 IE8 进入 IE7 兼容模式?

【问题讨论】:

  • 另外,我可以使用 IIS 设置完成此操作吗?
  • 我想我可以看到旧页面的价值,但请不要创建依赖 IE7 的新页面......让野兽死吧。
  • IE8 有 IE7 没有的错误,并且在切换到兼容模式时会消失:stackoverflow.com/questions/1070178/… 我的网站受到该错误的影响,我宁愿告诉 IE8 正确显示它IE7 和其他所有浏览器都会在我的 .htaccess 文件中添加一行,而不是在我的实际页面中添加特定于浏览器的解决方法。
  • 添加X-UA-Compatible标头也去掉了“兼容性视图”按钮,看起来更专业的IMO。用户不必弄清楚哪种模式最适合您的网站。让网站支持所有主流浏览器是网站管理员的工作。

标签: internet-explorer internet-explorer-8 internet-explorer-7 cross-browser


【解决方案1】:

如果您将此添加到您的元标记中:

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

IE8 会像 IE7 一样呈现页面。

【讨论】:

  • 你是对的 - 但尝试在开始 标记之后立即添加它。当它位于页面下方时,我遇到了问题。
  • 如果我不将此行添加到我网站上的每个 aspx 页面会怎样。我可以用 IIS 来做吗?
  • @Bryan:不。这就是我们使用母版页的原因。
  • 请参阅下面的 DDaviesBrackett 的回答以在站点级别进行操作
  • 这个解决方案的问题是你不能把它放在&lt;!--[if IE]&gt;风格的条件句中——它必须是head元素中的第一个标签。这意味着它并不是一个真正长期可行的解决方案,因为它甚至会迫使 IE9 进入 IE7 渲染模式。除非有人知道解决方案...
【解决方案2】:

我现在可能已经找到了。 http://blog.lroot.com/articles/the-ie7-compatibility-tag-force-ie8-to-use-the-ie7-rendering-mode/

网站说要添加这个元标记:

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

或将其添加到 .htaccess

Header set X-UA-Compatible: IE=EmulateIE7 

【讨论】:

  • 感谢 htaccess !
【解决方案3】:

它甚至比这更简单。使用 HTML,您只需将此元标记添加到您的页面(页面上的第一件事):

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

如果您想使用 .net 来执行此操作,您只需发送带有该元信息的 HTTP 请求的标头即可。不过,这需要刷新页面才能工作。

此外,您可以在此处查看类似的问题: Compatibility Mode in IE8 using VBScript

【讨论】:

    【解决方案4】:

    你可以设置an HTTP header,它会强制IE8使用IE7兼容模式。

    【讨论】:

    • 我无法使用元标记,但添加此标头就可以了。谢谢!
    【解决方案5】:

    对此的注释:

    IE 8.0s 仿真只承诺以相同的方式显示页面。存在可能导致功能中断的细微差异。我最近遇到了一个问题。在 IE 7.0 使用 IE 8.0 中称为“anonymous()”的 javascript 包装器函数的地方,包装器的名称不同。

    所以不要指望像 JavaScript 这样的东西“正常工作”,因为你打开了仿真。

    【讨论】:

    • 无论浏览器版本如何,编写依赖于匿名函数“名称”的代码都不是可靠的依赖项。
    【解决方案6】:

    如果您想在 IE 8 标准模式下切换 IE 8 页面呈现,请再做一个

    <meta http-equiv="X-UA-Compatible" content="IE=100" /> <!-- IE8 mode -->
    

    【讨论】:

      【解决方案7】:

      您可以在 web.config 中进行操作

          <httpProtocol>
              <customHeaders>
                  <add name="X-UA-Compatible" value="IE=7"/>
              </customHeaders>
          </httpProtocol>
      

      与上述解决方案相比,我有更好的结果。不知道为什么这没有作为解决方案给出。 :)

      【讨论】:

      • +1 好的解决方案,如果您使用的是 IIS7 - iis.net/ConfigReference/system.webServer/httpProtocol
      • 当您无法更改页面内容或直接更改页面标题时的绝佳解决方案。
      • 我认为 HTTP 标头会覆盖任何元标记,因此如果您可以选择,它们应该是首选解决方案。
      【解决方案8】:

      这可以在 IIS 中完成: http://weblogs.asp.net/joelvarty/archive/2009/03/23/force-ie7-compatibility-mode-in-ie8-with-iis-settings.aspx

      同时阅读 cmets: 2009 年 4 月 1 日,星期三,上​​午 8:57,作者:约翰·摩尔

      快速跟进。只要我使用 IE=EmulateIE7 值,这对我的网站非常有用。尝试使用 IE=7 导致我的网站在 IE8 上运行时基本上挂起。

      【讨论】:

        【解决方案9】:

        我的代码有这个标签

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

        有没有一种方法可以让我跳过这个标签,而布局却可以很好地显示出来 使用该标签,显示器将在 IE 7 上运行,但我想在其他版本中运行它...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-01
          • 2013-02-21
          • 1970-01-01
          相关资源
          最近更新 更多