【问题标题】:IE11 User Agent String issueIE11 用户代理字符串问题
【发布时间】:2015-07-01 23:41:02
【问题描述】:

我在 IE11 中使用兼容模式。我正在使用下面的代码来设置兼容模式:

<meta http-equiv="x-ua-compatible" content="IE=8">  

现在,当我运行我的网页时,某些功能会中断。将用户代理字符串设置为“Internet Explorer 8”后一切正常。这意味着用户代理字符串未在兼容模式下正确设置。

现在的问题是如何强制我的代码使用 IE8 用户代理字符串。我将调试点放在代码中并检查了navigator.useragent 属性,它显示了 IE8 用户代理字符串,但在 Fiddler 中它显示了 IE11 用户代理字符串。

我很困惑为什么它不在兼容模式下使用 IE8 UA。我正在修改代码以使其与 IE11 兼容,但这可能需要一些时间。因此发现使用x-ua-compatible 可能是快速解决方案。请指教。

提前致谢。

【问题讨论】:

  • 你的代码的哪一部分被破坏了?你能分享一些吗
  • 有一个 url 可以从服务器启动一些应用程序。如果我传递 IE8 用户代理字符串,那么它工作正常。这些应用程序会下载一些 dll。我无权访问它们。我们可以动态设置用户代理字符串吗?如果我使用的是兼容模式 IE8,那么应该通过哪个用户代理字符串 IE11?
  • 是否需要为兼容模式添加任何额外的标签?
  • 兼容模式改变了文档模式,例如用于呈现页面的模式。它不会影响用户代理字符串。如果您要更改用户代理字符串,则需要查看企业模式。要了解更多信息,请参阅blogs.msdn.com/b/ie/archive/2015/04/23/…
  • 感谢兰斯的回复。我在 USer 代理字符串方面有点困惑,在代码中如果显示 navigator.useragent 则它显示正确的一个为 IE8,但在提琴手它鞋 IE11 用户代理字符串。

标签: internet-explorer compatibility internet-explorer-11


【解决方案1】:

emulation of IE8 in Internet Explorer 11 is broken。使用&lt;meta http-equiv="x-ua-compatible" content="IE=8"&gt; 设置模式是权宜之计。为您的网站启用compatibility view 可能会有所帮助。大多数问题都与 CSS 和 JavaScript 有关,尤其是翻转和下拉菜单。

您有正确的解决方案:提取 IE8 特定/损坏的代码并为现代浏览器重新编码。

Microsoft have specifically changed the user agent string 让程序员远离用户代理嗅探。 Microsoft 认为代码应该写入detect features 而不是浏览器版本。

从 Windows Internet Explorer 8 开始,用户代理字符串中报告的版本标记可能无法反映浏览器的实际版本。如果为网页启用了兼容性视图或将浏览器模式设置为较早版本,则版本令牌会报告较早版本。

“如何强制我的代码使用 IE8 用户代理字符串。” 这取决于您的代码被调用的方式以及问题发生的位置和方式。如果 x-ua-compatible 是 or 之后的第一个标签,IE 只会使用它。由于 IE11 没有正确模拟 IE8,在 IE11 中强制使用 IE8 模式并不能神奇地解决问题。

一种选择是不使用 IE11。留在 IE10 上可以避免很多问题。 另一种选择是使用不同的浏览器 - 基于 Firefox 或 Chrome 的浏览器比 IE11 运行得更好。

相关:

请注意,Windows 10 上的 IE11 与 Windows 7 和 8 上的 IE11 不同。Windows 10 将提供新的Edge browser

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 2011-07-05
    • 2010-10-29
    • 2016-11-25
    • 2013-05-14
    • 2013-10-15
    • 2014-02-01
    相关资源
    最近更新 更多