我在Tomcat上运行的java Web应用程序可以在Internet Explorer 8中运行,并且可以通过将用户代理字符串设置为IE8模式在Internet Explorer 10中运行。此Web应用程序主要通过content="IE=10"
在IE10模式下在Internet Explorer 11中运行。由于IE11仿真问题,Web应用程序在IE8模式下无法在IE11中运行。 IE11的边缘模式不起作用。 IE10模式是此阶段唯一可行的选择。
我正在寻找一种方法来设置IE10的浏览器模式来模拟IE8,并设置IE11以在没有conditional comments的情况下模拟IE10。
我们在Windows 7上拥有IE8,IE10和IE11的用户。 IE10目前是使用中的主流浏览器。我们即将转向IE11"。没有其他浏览器可以使用。用户没有IE版本的选择,他们将随着时间的推移升级到IE11。
要回答以下问题:"为什么要为IE11设置IE=8
模式,为IE11设置IE=10
模式?"
可以修复一些Web应用程序代码,以便IE11以IE=10
模式运行。 IE8的IE11仿真被打破到不值得尝试修复的程度。供应商不支持IE11。我能做的最好的事情是设置一个适用于大多数功能的仿真模式,并在可能的情况下修复其余功能。
IE=8
是适用于IE8和IE10的UA模式。这需要保留,直到IE10不再使用。
<meta http-equiv="X-UA-Compatible" content="IE=8" />
IE11中最有希望使用此应用程序的UA设置是IE=10
。这不能直接设置,因为它打破了IE10用户的应用程序。仅IE11就是一个解决方案:
<meta http-equiv="X-UA-Compatible" content="IE=10" />
Conditional comments are no longer supported by IE10 and IE11.这意味着以下代码不起作用。这导致IE11具有Edge的文档模式。
<!--[if IE 11]>
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<![endif]-->
设置content="IE=8, IE=10"
适用于IE11但不适用于IE10。
答案 0 :(得分:0)
使用Velocity,可以通过抓取用户代理然后根据用户代理字符串设置模式,为Internet Explorer 10和Internet Explorer 11设置不同的用户代理。这适用于Internet Explorer 10。
#if ( $req.getHeader("User-Agent").matches('.*Trident.6.0.*') )
<meta http-equiv="X-UA-Compatible" content="IE=8" />
#else
<meta http-equiv="X-UA-Compatible" content="IE=10" />
#end