【问题标题】:how do I properly show on IE8, with compatibility mode enabled, a web application which does not support compatibility mode? [duplicate]如何在启用兼容模式的 IE8 上正确显示不支持兼容模式的 Web 应用程序? [复制]
【发布时间】:2015-03-07 13:05:32
【问题描述】:

让我开始说,我认为我知道在 stackoverflow 上有两三个很好的答案,但没有一个(或我在互联网上找到的任何其他答案)对我有用。

我的应用程序不支持 Internet Explorer 兼容模式,并且我的客户端工作站设置为选中了“以兼容性视图选项显示所有 Intranet 站点”复选框。

我尝试了各种解决方案,其中: - 使用元标记,例如<meta http-equiv="x-ua-compatible" content="IE=edge> 与 IE 版本的所有变体。我试着把它作为标签之后的第一个元素和标签之后的第一个元素。 - 我还尝试使用<!DOCTYPE html> 强制使用 HTML5 doctype,这是 Microsoft 建议的当前首选解决方案,用于强制浏览器使用可用的最高引擎(因为它是 HTML5 doctype)。

Internet explorer 8 完全不关心所有这些,并在兼容模式下愉快地运行(“IE8 Compat View”调试器说)。

另一方面,使用 <meta http-equiv="x-ua-compatible" content="IE=edge> 在 IE9 上工作正常,强制关闭兼容模式。

我的问题是,是否有人知道如何以编程方式从网页甚至服务器端(Weblogic 12c)强制关闭 IE8 兼容模式。

谢谢

【问题讨论】:

  • 感谢 chaenu,这确实非常相似,问题是建议的解决方案都不适合我,我已经完成了。我基本上尝试了<meta http-equiv="x-ua-compatible" content="... 的所有可能值,但在 IE8 上没有运气,看起来浏览器忽略了元标记。我认为我没有弄错这个元标记,因为它正在解决 IE9 的问题。
  • 是的,我认为你做的一切都是正确的,是 IE8 不允许你覆盖设置。
  • 您应该引用您检查过的问题并解释您的问题有何不同。好像真的没有,即这是重复的。
  • 对重复问题标记为正确的答案对我和其他人来说似乎不正确。在这种情况下我应该如何表现?
  • 您不能“强制”IE 从网页中显示特定的文档模式。您只能请求一种模式,并希望其他一些设置不会覆盖该请求。可能的覆盖包括强制站点(或页面)进入特定模式的组策略、用户选择(将站点放入区域或兼容性视图设置)等。最好进行相应的编码。使用运行时检测(可能是documentModecompatMode 属性)来查看当前值是否符合您的预期。如果没有,向用户显示警告并将他们重定向到帮助页面。

标签: html internet-explorer internet-explorer-8


【解决方案1】:

如果您想要“旧”渲染,并且工具栏上没有显示按钮以便用户可以切换模式,您可以使用:

<head>
  <!-- Mimic Internet Explorer 8 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
  <title>My Web Page</title>
</head>

其他选项(新旧)包括:IE=5、IE=7、IE=8 或 IE=edge

(边缘等于可用的最高模式)

【讨论】:

  • 也尝试过,但仍然没有运气。页面源代码显示:&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" &gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt; 但 IE 8 仍以兼容模式运行。
【解决方案2】:

答案已经发布在Force "Internet Explorer 8" browser mode in intranet,但不被接受为正确答案。

如果您的 Intranet 使用 IE 的默认设置,则无论任何网站设置如何,都会对 Intranet 站点强制执行 IE7 标准模式。

来自this

兼容性视图和企业

如今,许多行业网站都支持 Internet Explorer 7。为了保持兼容性,Internet Explorer 8 附带了基于区域评估的智能默认值。在默认状态下,公共 Internet 上的所有网站均以 Internet Explorer 8 标准模式(兼容性视图关闭)显示,所有 Intranet 网站均以 Internet Explorer 7 标准模式(兼容性视图打开)显示。

让我们看一些例子。如果您导航到本地 Intranet 上的站点,例如 http://myPortalhttp://sharepoint/sites/mySite,Internet Explorer 8 会使用用户代理字符串“7”、版本向量“7”来标识自己,并在 Internet Explorer 中显示触发标准模式的网页7 标准模式。这种组合允许在 Internet Explorer 7 中正常运行的网页在 IE8 中继续运行。

解决问题的唯一方法是取消选中客户工作站上的选项。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 我决定只提供链接,因为我不想复制另一个堆栈溢出问题的答案。将此问题标记为重复问题会更好吗?
  • 答案“解决问题的唯一方法是取消选中客户工作站上的选项”几乎不是正确答案,因为有数十个帖子声称他们通过元标记解决了这个问题它不适合我。我仍在尝试,现在的行为对我来说看起来非常不一致。它与 HTML doctype 一起正常工作,如果我指向我的本地环境(“localhost”,根据较低的状态栏,IE8 将其视为“本地 Intranet”)而不是如果我指向客户端的服务器,假设我是在 VPN 中,仍被视为“本地 Intranet”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 2011-03-15
  • 2014-07-02
  • 2012-07-26
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多