Archivo de la etiqueta: regex

Saber si navegamos en un móvil

Pues eso… que estoy haciendo pruebas para saber si estoy usando el código de una página Web en un móvil o no… y buscando en mi sitio me encontré con este truco de la sección de HTML:
1.- Detectar el navegador

No es el navegador lo que quiero detectar, pero sí me sirve usar el mismo "informador", es decir navigator.userAgent.

Por medio de esa propiedad podemos averiguar muchas cosas, algunas más enrevesadas que otras, y para el caso que quiero probar me sirve… aunque no al 100% ya que en realidad la comprobación que hago no es para saber si estoy usando el código en un dispositivo móvil si no en ciertos "modelos" de dispositivos móviles.

En mi caso compruebo los siguientes: Android, iPhone, iPod, iPad, BlackBerry y Symbian.

El código a usar sería algo así en JavaScript:

 

<script type="text/javascript">

    var uAg = navigator.userAgent.toLowerCase();
    var isMobile = !!uAg.match(/android|iphone|ipad|ipod|blackberry|symbianos/i);

    if (isMobile)
        document.write("navegando desde un dispositivo móvil");

</script>

 

Como puedes ver en el código se comprueban varias cadenas que suelen (o pueden) aparecer en el valor devuelto por el navegador, y esa comprobación se hace por medio de una expresión regular, sabiendo esto, si necesitas añadir más "valores" a esa comprobación, por ejemplo, para saber si es un Nokia simplemente tendrías que poner antes del "/i" el separador y la cadena a añadir en minúsculas "|nokia", haciendo eso, la cadena de comprobación quedaría de esta forma:

 

var isMobile = !!uAg.match(/android|iphone|ipad|ipod|blackberry|symbianos|nokia/i);

 

Nota:

Si a alguien se le ocurre que comprobando si está la palabra "mobile" en la cadena devuelta por navigator.userAgent, decirle que a lo mejor antes era así y puede que en muchos de los navegadores siga siendo así, pero da la casualidad que en el navegador Opera Mini que tengo en mi Samsung Galaxy S no aparece la palabra "mobile" por ningún sitio, así que… a mí no me vale.

 

Y si quieres hacer esa misma comprobación usando Visual Basic para .NET, puedes hacerlo de esta forma:

 

<%

Dim uAg As String = Request.ServerVariables("HTTP_USER_AGENT")
Dim regEx As New Regex("android|iphone|ipad|ipod|blackberry|symbianos", RegexOptions.IgnoreCase)
Dim isMobile As Boolean = regEx.IsMatch(uAg)
    
If isMobile Then
    Response.Write("navegando desde un dispositivo móvil")
End If

%>

 

Esto mismo en C# puedes hacerlo, pero en la página ASPX tendrías que indicar que estás usando código de C# y hacer una importación del espacio de nombres System.Text.RegularExpresions:

 

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Text.RegularExpressions" %>

 

Y el código para comprobar si estamos usando el navegador en un dispositivo móvil en C# será este:

 

<%
string uAg = Request.ServerVariables["HTTP_USER_AGENT"];
Regex regEx = new Regex(@"android|iphone|ipad|ipod|blackberry|symbianos", RegexOptions.IgnoreCase);
bool isMobile = regEx.IsMatch(uAg);

if(isMobile)
    Response.Write("navegando desde un dispositivo móvil");

%>

 

Nos vemos.

Guillermo