Detector de navegador

Em algumas ocasiões é necessário detectar o navegador do usuário e sua versão, para mostrar um conteúdo distinto em cada caso. Por exemplo, poderemos mostrar um script em Javascript diferente dependendo do navegador ou um banner distinto. Um detalhe importante é que não devemos construir páginas distintas para cada navegador, devemos tentar que as páginas sejam compatíveis e em algumas ocasiões este método pode ser útil para nós.

Para detectá-lo dispomos da coleção ServerVariables e teoricamente a variável HTTP_USER_AGENT nos dará a informação que queremos. Para começar podemos visualizar o conteúdo dessa variável.

<% Response.write Request.ServerVariables(“HTTP_USER_AGENT”) %>

Este tag tem toda a informação que você pode necessitar, mas provavelmente seja um problema resgatar os dados deste texto para estar a par de todos os detalhes que se necessita. Um exemplo para tratar a cadeia pode ser o seguinte:

Vamos fazer uso de alguma função de cadeia. Teoricamente vamos utilizar a função inStr, que serve para encontrar um substring dentro de outra cadeia de caracteres.

InStr([start, ]string1, string2[, comparação])

Início, é opcional e indica a posição inicial a partir da qual buscar
String1, é a cadeia onde realizamos a busca
String2, é a cadeia que estamos buscando
Comparação, opcional, indica se se realiza uma comparação binária (valor 0, por padrão) ou textual (valor 1)

InStr devolve 0 se não encontra o string e se o encontra devolve a posição do primeiro caractere.

<%
nav = Request.ServerVariables(“HTTP_USER_AGENT”)
if instr(nav,”MSIE”) then
response.write “Seu navegador é Internet Explorer”
elseif instr(nav,”Mozilla”) then
response.write “Seu navegador provavelmente seja de Netscape”
else
response.write “Seu navegador não é Netscape nem Explorer”
end if
%>

Utilizamos a saída da função InStr como expressão a avaliar no IF. Si InStr não encontrou nada, devolverá um zero, que será interpretado como um false. Se tiver encontrado a cadeia devolverá a posição do primeiro caractere, que será diferente de zero e será interpretada como true.

Não podemos estar certos de que o navegador seja Netscape porque não indica claramente em sua tag HTTP_USER_AGENT a marca do navegador.

Colocamos um caso no qual não sabemos que navegador é, ou melhor, que estamos convencidos que não é Explorer e nem Netscape. Serão poucos os casos de que não se possa detectar. Neste caso, estamos quase certos de que o navegador será antigo e devemos fazer ações básicas que sejam compatíveis com os navegadores menos avançados.

Browser Capabilites

Porém, esta não é a única forma de detectar o navegador. Existe um interessante objeto que pode nos devolver os dados que estamos buscando de uma maneira mais ordenada. Trata-se do componente Browser Capabilites, que é utilizado da seguinte forma:

<html>
<head>
<title>Browser Capabilities</title>
</head>
<body>

<%
Set nav = Server.CreateObject(“MSWC.BrowserType”)
%>
Navegador: <%=nav.browser %>
<br><br>
Versão: <%=nav.versao%>
<br><br>

<%
if (nav.vbscript = TRUE) then
%>
Pode executar VBScript
<% else %>
NAO pode executar VBScript
<% end if %>

<br><br>

<% if (nav.javascript = TRUE) then %>
Pode executar Javascript
<% else %>
NAO pode executar Javascript
<%
end if
set bc=nothing
%>

</body>
</html>

Pode ocorrer de não ser possível ver este exemplo em determinados navegadores por não detectarem corretamente os valores. Isto é devido a que o nosso servidor pode possuir o arquivo browscap.ini pouco atualizado.

A responsabilidade de que o arquivo não esteja bem atualizado é de nosso provedor de hosting, mas se em algum caso quisermos atualizar o arquivo podemos fazer. Para conseguir uma versão atualizada podemos visitar a página www.cyscape.com/browscap onde se pode baixar o arquivo.

Se temos um provedor de hosting deveriam se oferecer a atualizar o arquivo, mas se temos nosso próprio servidor poderemos atualiza-lo nós mesmos subscrevendo nosso browscap.ini atual, que em nosso sistema está no diretório c:windowssysteminetsrv.

Este método é interessante, mas segundo nossa experiência não é o suficiente para assegurarmos que todos os navegadores se detectam corretamente. Uma última possibilidade é comprar um componente comercial, como o que vendem na mesma página onde podemos baixar browscap.ini, que informam que tem maiores possibilidades para detectar navegadores, plug-ins, definição de tela… O problema é que custa bastante dinheiro.

Fonte: http://www.criarweb.com/artigos/432.php

Deixe um comentário