首页 文章

如何为IE10和IE11设置不同的用户代理

提问于
浏览
0

我有一个在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 .

1 回答

  • 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
    

相关问题