Un breve ejemplo sobre cómo detectar el navegador del usuario.
En algunas ocasiones es necesario detectar el navegador del usuario y su versión para mostrar un contenido distinto en cada caso. Por ejemplo podremos mostrar un script en Javascript distinto dependiendo del navegador o un banner distinto. Un detalle importante es que no debemos construir páginas distintas para cada navegador, debemos intentar que las páginas sean compatibles y en algunas ocasiones este método nos puede ser útil.
Para detectarlo disponemos de la colección ServerVariables y en concreto la variable HTTP_USER_AGENT nos dará la información que queremos. Para empezar podemos empezar por visualizar el contenido de esa variable
<% Response.write Request.ServerVariables("HTTP_USER_AGENT") %>
Puedes ver el contenido de tu tag HTTP_USER_AGENT aquí.
Este tag tiene toda la información que puedas necesitar, pero probablemente sea un problema rescatar los datos de ese texto para enterarse de todos los detalles que necesitas. Un ejemplo para tratar la cadena puede ser el siguiente.
Vamos a hacer uso de alguna función de cadena. En concreto vamos a utilizar la función inStr, que sirve para encontrar un substring dentro de otra cadena de caracteres.
InStr([start, ]string1, string2[, comparación])
Inicio, es opcional e indica la posición inicial a partir de la cuál buscar
String1, es la cadena donde realizamos la búisqueda
String2, es la cadena que estamos buscando
Comparación, opcional, indica si se realiza una comparación binaria (valor 0, por defecto) o textual (valor 1)
InStr devuelve 0 si no encuentra el string y si lo encuentra devuelve la posición del primer caracter.
<%
nav = Request.ServerVariables("HTTP_USER_AGENT")
if instr(nav,"MSIE") then
response.write "Tu navegador es Internet Explorer"
elseif instr(nav,"Mozilla") then
response.write "Tu navegador probablemente sea de Netscape"
else
response.write "Tu navegador no es Netscape ni Explorer"
end if
%>
Puedes ver el resultado de este script en tu navegador. Utilizamos la salida de la función InStr como expresión a evaluar en el IF. Si InStr no encontró nada devolverá un cero, que será interpretado como un false. Si encontró la cadena devolverá la posición del primer carácter, que será distinta de cero y será interpretada como true.
No podemos estar seguros de que el navegador sea Netscape porque no indica claramente en su tag HTTP_USER_AGENT la marca del navegador.
Ponemos un caso en el que no sabemos qué navegador es, o más bien, en el que estamos convencidos que no es ni Explorer ni Netscape. Serán pocos los casos en los que no se pueda detectar. En estos caso estamos casi seguros de que el navegador será antiguo y debemos hacer acciones básicas que sean compatibles con los navegadores menos avanzados.
Browser Capabilites
Pero esta no es la única forma de detectar el navegador. Existe un interesante objeto que nos puede devolver los datos que andamos buscando de una manera más ordenada. Se trata del componente Browser Capabilites. Que se usa de la siguiente manera.
<html>
<head>
<title>Browser Capabilities</title>
</head>
<body>
<%
Set nav = Server.CreateObject("MSWC.BrowserType")
%>
Navegador: <%=nav.browser %>
<br><br>
Versión: <%=nav.version%>
<br><br>
<%
if (nav.vbscript = TRUE) then
%>
Puedes ejecutar VBScript
<% else %>
NO puedes ejecutar VBScript
<% end if %>
<br><br>
<% if (nav.javascript = TRUE) then %>
Puedes ejecutar Javascript
<% else %>
NO puedes ejecutar Javascript
<%
end if
set bc=nothing
%>
</body>
</html>
Podemos ver en marcha este ejemplo en la siguiente página, pero probablemente nos demos una desilusión porque en determinados navegadores no se detecta correctamente los valores. Esto es debido a que nuestro servidor web tiene poco actualizado el archivo browscap.ini.
La responsabilidad de que el archivo no esté bien actualizado es de nuestro proveedor de hosting, pero si en algún caso queremos actualizar el archivo lo podemos hacer. Para conseguir una versión actualizada podemos visitar la página www.cyscape.com/browscap donde se puede descargar el archivo.
Si tenemos un proveedor de hosting debería brindarse a actualizar el archivo, si tenemos nuestro propio servidor podremos actualizarlo nosotros mismos sobreescribiendo nuestro browscap.ini actual, que en nuestro sistema está en el directorio c:\windows\system\inetsrv.
Este método es interesante, pero según nuestra experiencia no es suficiente para asegurar que todos los navegadores se detectan correctamente. Una última posibilidad es comprar un componente comercial, como el que venden en la misma página donde podemos descargar browscap.ini, que informan que tiene mayores posibilidades para detectar navegadores, plug-ins, definición de pantalla... El problema es que cuesta bastante dinero. www.cyscape.com.
Para detectarlo disponemos de la colección ServerVariables y en concreto la variable HTTP_USER_AGENT nos dará la información que queremos. Para empezar podemos empezar por visualizar el contenido de esa variable
<% Response.write Request.ServerVariables("HTTP_USER_AGENT") %>
Puedes ver el contenido de tu tag HTTP_USER_AGENT aquí.
Este tag tiene toda la información que puedas necesitar, pero probablemente sea un problema rescatar los datos de ese texto para enterarse de todos los detalles que necesitas. Un ejemplo para tratar la cadena puede ser el siguiente.
Vamos a hacer uso de alguna función de cadena. En concreto vamos a utilizar la función inStr, que sirve para encontrar un substring dentro de otra cadena de caracteres.
InStr([start, ]string1, string2[, comparación])
Inicio, es opcional e indica la posición inicial a partir de la cuál buscar
String1, es la cadena donde realizamos la búisqueda
String2, es la cadena que estamos buscando
Comparación, opcional, indica si se realiza una comparación binaria (valor 0, por defecto) o textual (valor 1)
InStr devuelve 0 si no encuentra el string y si lo encuentra devuelve la posición del primer caracter.
<%
nav = Request.ServerVariables("HTTP_USER_AGENT")
if instr(nav,"MSIE") then
response.write "Tu navegador es Internet Explorer"
elseif instr(nav,"Mozilla") then
response.write "Tu navegador probablemente sea de Netscape"
else
response.write "Tu navegador no es Netscape ni Explorer"
end if
%>
Puedes ver el resultado de este script en tu navegador. Utilizamos la salida de la función InStr como expresión a evaluar en el IF. Si InStr no encontró nada devolverá un cero, que será interpretado como un false. Si encontró la cadena devolverá la posición del primer carácter, que será distinta de cero y será interpretada como true.
No podemos estar seguros de que el navegador sea Netscape porque no indica claramente en su tag HTTP_USER_AGENT la marca del navegador.
Ponemos un caso en el que no sabemos qué navegador es, o más bien, en el que estamos convencidos que no es ni Explorer ni Netscape. Serán pocos los casos en los que no se pueda detectar. En estos caso estamos casi seguros de que el navegador será antiguo y debemos hacer acciones básicas que sean compatibles con los navegadores menos avanzados.
Browser Capabilites
Pero esta no es la única forma de detectar el navegador. Existe un interesante objeto que nos puede devolver los datos que andamos buscando de una manera más ordenada. Se trata del componente Browser Capabilites. Que se usa de la siguiente manera.
<html>
<head>
<title>Browser Capabilities</title>
</head>
<body>
<%
Set nav = Server.CreateObject("MSWC.BrowserType")
%>
Navegador: <%=nav.browser %>
<br><br>
Versión: <%=nav.version%>
<br><br>
<%
if (nav.vbscript = TRUE) then
%>
Puedes ejecutar VBScript
<% else %>
NO puedes ejecutar VBScript
<% end if %>
<br><br>
<% if (nav.javascript = TRUE) then %>
Puedes ejecutar Javascript
<% else %>
NO puedes ejecutar Javascript
<%
end if
set bc=nothing
%>
</body>
</html>
Podemos ver en marcha este ejemplo en la siguiente página, pero probablemente nos demos una desilusión porque en determinados navegadores no se detecta correctamente los valores. Esto es debido a que nuestro servidor web tiene poco actualizado el archivo browscap.ini.
La responsabilidad de que el archivo no esté bien actualizado es de nuestro proveedor de hosting, pero si en algún caso queremos actualizar el archivo lo podemos hacer. Para conseguir una versión actualizada podemos visitar la página www.cyscape.com/browscap donde se puede descargar el archivo.
Si tenemos un proveedor de hosting debería brindarse a actualizar el archivo, si tenemos nuestro propio servidor podremos actualizarlo nosotros mismos sobreescribiendo nuestro browscap.ini actual, que en nuestro sistema está en el directorio c:\windows\system\inetsrv.
Este método es interesante, pero según nuestra experiencia no es suficiente para asegurar que todos los navegadores se detectan correctamente. Una última posibilidad es comprar un componente comercial, como el que venden en la misma página donde podemos descargar browscap.ini, que informan que tiene mayores posibilidades para detectar navegadores, plug-ins, definición de pantalla... El problema es que cuesta bastante dinero. www.cyscape.com.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...