Detección de navegador

  • Por
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.

Autor

Miguel Angel Álvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

gsus

19/11/2002
Ciertamente hay errores a la hora de averiguar el tipo de navegador que se esta utilizando.. por que? muy facil.

Request.ServerVariables("HTTP_USER_AGENT") indica el navegador del usuario.

El tuyo es el siguiente:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

MI navegador es internet explorer 6... y lo anterior es lo que devuelve ("HTTP_USER_AGENT") , por lo tanto no es valido preguntar por mozilla... para indicar que el usuario utiliza nescape,, debido probablemente a que ie6 .. funcione sobre el codigo comercializado por nestcape a microsoft..

/*
Esto es lo que me devuelve su scritp.. utilizando Server.CreateObject("MSWC.BrowserType") :

Navegador: Netscape

Versión: 4.00

NO puedes ejecutar VBScript

Puedes ejecutar Javascript
*/

y nada mas lejos de la realidad.....

RESPUESTA

Muchas gracias por tu comentario. Tienes razón, pero el problema no es de nuestro artículo sino de lo que devueve el componente Browser Capabilities que es casi todo mentira. Además, nosotros avisamos en el texto sobre este problema.

Gabriel Bravo

20/5/2005
Buen Dia a Todos en desarrolloweb.com.

Necesito identificar el tipo de navegador para utilizar capas con Javascript. Utilizo las funciones recomendadas en el artículo "Mostrar y ocultar capas con IE4 NS 4" pero en Mozilla Firefox 1.0.3 no me funciona el mostrar la capa.

edu

02/6/2011
no entiendo que pasa
Source line: Response.Write nav.browser
Description: Object required: 'nav'