私の .jsp では、クライアントのブラウザに依存して使用する .css クラスまたは属性を定義するために、User-Agent を使用することがあります。
例:
<c:set var="browser" value="${header['User-Agent']}" scope="session"/>
<c:if test="${(fn:contains(browser,'Safari'))||(fn:contains(browser,'Chrome'))}">
<c:set var="cellClass" value="cell-nonFF"/>
</c:if>
<c:if test="${(fn:contains(browser,'Safri') == false)&&(fn:contains(browser,'MSIE') == false)}">
<c:set var="cellClass" value="cell-FF"/>
</c:if>
<c:if test="${fn:contains(browser,'MSIE')}">
<c:set var="cellClass" value="cell-IE"/>
</c:if>
条件は IE でのみ有効なので、さまざまなブラウザーで User-Agent をそのように定義する必要があります。
そうすれば、今のところ問題ありません。しかし、別のより適切で安定した方法があると思います。なぜなら、すべてのブラウザーの User-Agent 定義は非常に複雑であり、モバイル ブラウザーをさらにサポートする予定だからです。
Safari 4 の検出: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.16 (KHTML、Gecko など) バージョン/4.0 Safari/528.16
IE 6 の検出::Mozilla/4.0 (互換性あり; MSIE 6.0 ; Windows NT 5.1; SV1; iOpus-IM; Mozilla/4.0 (互換; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
それはより安定した代替手段ですか?