Alguns WebControls checam diretamente os recursos de que o browser dispõe (browserCapabilities) para decidir a forma com que irão se renderizar.
Ocorre que a informação de BrowserCapabilities
é preenchida pelo ASP.NET e nem sempre o ASP.NET consegue reconhecer corretamente
o browser do client. Encontrei relatos de problemas com o FireFox, por exemplo.
Para resolver estes casos precisamos atualizar o web.config com um elemento
chamado browsercaps. Através deste elemento podemos configurar o ASP.NET para
reconhecer novos browsers e indicar ao ASP.NET os recursos disponíveis nestes
novos browsers.
Veja um exemplo :
<browserCaps>
<!-- NETSCAPE 6 & 7 -->
<case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+ )?Netscape[6|7]/(?version(?major\d+)(?minor\.\d+)(?letters\w*)).*">
tagwriter=System.Web.UI.HtmlTextWriter browser=Netscape version=$
majorversion=$ minorversion=$ frames=true tables=true cookies=true
javascript=true javaapplets=true ecmascriptversion=1.5 w3cdomversion=1.0 css1=true
css2=true xml=true
<filter match="^b" with="$">beta=true</filter>
</case>
<!-- MOZILLA -->
<case match="^Mozilla/(?version(?major\d+)(?minor\.\d+)(?letters\w*)).*">css1=true
<!-- is this negating? confirm -->
<case match="^[5-9]\." with="$">css2=true tagwriter=System.Web.UI.HtmlTextWriter</case>
</case>
<!-- OPERA 5+ -->
<case match="Opera[ /](?version(?major\d+)(?minor\.\d+)(?letters\w*))">
browser=Opera version=$ majorversion=$ minorversion=$
frames=true tables=true cookies=true javascript=true ecmascriptversion=1.1
<filter match="[4-9]" with="$">ecmascriptversion=1.3 css1=true
css2=true xml=true
<filter match="[5-9]" with="$">tagwriter=System.Web.UI.HtmlTextWriter
w3cdomversion=1.0</filter>
</filter>
<filter match="^b" with="$">beta=true</filter>
</case>
</browserCaps>
Observem como são utilizadas expressões regulares para fazer a identificação
do browser. A configuração acima deve ser inserida dentro do System.Web, no
Web.Config. Porém, também é possível inseri-la no machine.config de um servidor
web, desta forma ela passa a estar ativa em todos os sites deste servidor
- tai uma boa dica para provedores.
Podem ver outros exemplos em http://slingfive.com/pages/code/browserCaps/