我在IE11中使用兼容模式。我使用下面的代码来设置兼容模式:
<meta http-equiv="x-ua-compatible" content="IE=8">
现在,当我运行我的网页时,一些功能正在破坏。将用户代理字符串设置为&#39; Internet Explorer 8&#39;一切正常。这意味着用户代理字符串未在兼容模式下正确设置。
现在的问题是如何强制我的代码使用IE8用户代理字符串。我将调试点放在代码中并检查navigator.useragent
属性,它显示IE8用户代理字符串,但在Fiddler中显示IE11用户代理字符串。
我很困惑为什么它在兼容模式下不使用IE8 UA。我正在努力改变代码以与IE11兼容,但这可能需要一些时间。因此使用x-ua-compatible
找到可能是快速解决方案。请指教。
提前致谢。
答案 0 :(得分:0)
emulation of IE8 in Internet Explorer 11 is broken。使用<meta http-equiv="x-ua-compatible" content="IE=8">
设置模式是权宜之计。为您的网站启用compatibility view可能会有所帮助。大多数问题都是CSS和JavaScript,尤其是翻转和下拉菜单。
您有正确的解决方案:拉出IE8特定/损坏代码并重新编码现代浏览器。
Microsoft have specifically changed the user agent string让程序员远离用户代理嗅探。 Microsoft认为代码应写入detect features而非浏览器版本。
从Windows Internet Explorer 8开始,用户代理字符串中报告的版本令牌可能不会反映浏览器的实际版本。如果为网页启用了兼容性视图,或者浏览器模式设置为早期版本,则版本令牌会报告早期版本。
&#34;我如何强制我的代码使用IE8用户代理字符串。&#34;
这取决于您的代码的调用方式以及问题发生的位置和方式。 IE只会尊重x-ua-compatible
,如果它是或之后的第一个标记。在IE11中强制IE8模式并没有神奇地解决因IE11无法正确模拟IE8而导致的问题。
一种选择是不使用IE11。继续使用IE10避免了许多问题。 另一种选择是使用不同的浏览器 - 基于Firefox或Chrome的浏览器比IE11好得多。
相关:
请注意,Windows 10上的IE11与Windows 7和8上的IE11不同.Windows 10将出现新的Edge browser。