我有一个Web应用程序,其中某些组件如果浏览器是Internet Explorer,则不应该呈现。
从技术上讲,我可以使用jquery,但是我认为这样做不好,因为它是客户端代码,并且呈现的属性是在服务器上计算的。
我怎样才能做到这一点?
最佳答案
您可以检查User-Agent
标头是否包含字符串MSIE
。以下是所有“有效” MSIE标头字符串的概述:http://www.useragentstring.com/pages/Internet%20Explorer/您将看到所有MSIE字符串共享相同的模式"; MSIE "
。您可以检查一下:
<h:someComponent rendered="#{!header['User-Agent'].contains('; MSIE ')}">
或尚未使用Servlet 3.0 / EL 2.2时:
<h:someComponent rendered="#{!fn:contains(header['User-Agent'], '; MSIE ')}">
但是,您需要注意,这是一个客户端控制的值,可以轻松更改/欺骗。在客户端使用例如条件注释进行检查要可靠得多,因为MSIE实际上是唯一解释它们的浏览器。
关于internet-explorer - 如何根据浏览器类型渲染组件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7721884/