Академический Документы
Профессиональный Документы
Культура Документы
Javascript
En un post anterior vimos como redireccionar pginas en un sitio web. Hoy vamos a
ver como detectar el dispositivo del usuario y redireccionarlo a nuestro sitio mvil
mediante Javascript.
Cundo un usuario accede a nuestro sitio web desde un dispositivo mvil (smartphone o
tablet), es una buena prctica redirigirlo a un archivo de nuestro sitio adaptado para este
tipo de dispositivos a fin de adaptarnos a sus caractersticas especficas con la consecuentes
mejoras de navegacin y experiencia del usuario.
La deteccin del tipo de dispositivo que est utilizando nuestro visitante puede realizarse en
el servidor mediante PHP, pero tambin del lado del cliente mediante Javascript. Es bueno
recordar que Javascript puede deshabilitarse en todos los navegadores por accin del
usuario, por lo que quizs el mejor mtodo sera redirigirlo mediante PHP, de lo que
hablaremos en un prximo post.
Vamos a ver dos mtodos para realizar esta deteccin y el redireccionamiento. La primera
es creando nuestro propio script y la segunda utilizando un script externo como el de
Detect Mobile Browsers.
Lo primero que debemos hacer es acceder a la informacin del Agente de Usuario (User
Agent), que en Javascript se realiza a travs de navigator.userAgent. El cdigo sera el
siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<script type=text/javascript>
var dispositivo = navigator.userAgent.toLowerCase();
if( dispositivo.search(/iphone|ipod|ipad|android/) > -1 ){
document.location = http://www.pepfarinweb.com/mobile; }
</script>
</head>
<body>
</body>
</html>
Comento un poco el cdigo: Creamos una variable llamada dispositivo, que nos
almacena del objeto Navigator la propiedad userAgent, y nos devuelve una
informacin completa sobre el agente de usuario representado por el navegador, mediante
el mtodo toLowerCase(), transforma esta informacin en minsculas para que no existan
errores de escritura.
El condicional if busca la cadena iphone o ipod o ipad o android, (en este ejemplo,
aunque podemos colocar ms agentes de usuario), a travs del objeto location, lo
redirigimos al archivo de nuestro sitio donde se encuentran las pginas diseadas para este
tipo de dispositivos.
}
else
{
En este tutorial veremos dos funcionalidades que JavaScript nos brinda, las cuales nos
pueden ampliar las posibilidades de crear sitios web dinmicos y a la altura del mercado
actual. Veremos cmo detectar si se est ingresando desde un dispositivo mvil (ipod,
iphone, ipad) y cmo hacer que una funcin de JavaScript se ejecute despus de un tiempo
determinado.
Pueden ver el ejemplo en vivo ac y descargar los archivos del archivos del tutorial ac.
1. Creamos un archivo html.
1 <!DOCTYPE>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5 <title>Detectar dispositivos Mviles JavaScript - baka</title>
6 </head>
7 <body>
8 </body>
9 </html>
2. Dentro de la etiqueta <head> insertamos el cdigo JavaScript.
1 <head>
2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
3 <title>Detectar dispositivos Mviles JavaScript - baka</title>
4 <script>
5
6 </script>
7 </head>
3. Definimos un funcin dentro de la etiqueta <script>, la cual llamaremos
deteccion(). Esta funcin mostrar un mensaje de alerta cada vez que se ejecute.
1
2
3
4
5
<script>
function deteccion(){
alert('Esto es una prueba');
}
</script>
4. Ahora haremos que esta funcin se ejecute un segundo despus de que la pgina
haya cargado.
1
2
3
4
5
6
<script>
function deteccion(){
alert('Esto es una prueba');
}
window.onload = setTimeout("deteccion();",1000);
</script>
<body>
<div id="conte">
<div id="texto"></div>
</div>
</body>
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
}
#conte{
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
text-align:center;
color:#FF9;
}
#texto{
position:absolute;
left:0px;
top:50%;
width:100%;
height:40px;
margin-top:-20px;
background:#000;
}
</style>
navigator.platform;
Funcin JavaScript para detectar si una pgina web est siendo visitada desde
un dispositivo mvil
05/06/2014 Enlace permanente
1
2
3
function isMobile(){
return (
(navigator.userAgent.match(/Android/i)) ||
(navigator.userAgent.match(/webOS/i)) ||
(navigator.userAgent.match(/iPhone/i)) ||
(navigator.userAgent.match(/iPod/i)) ||
(navigator.userAgent.match(/iPad/i)) ||
(navigator.userAgent.match(/BlackBerry/))
);
10
A continuacin los cdigos, pero no olvides que visitar el post original de cada caso por si
se me escap algo.
Nota: la deteccin de iPhone con htaccess la aport yo.
Cdigo 1 - JAVASCRIPT
// android
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {
// Do something!
// Redirect to Android-site?
window.location = 'http://android.davidwalsh.name';
}
// ipad
// For use within normal web clients
var isiPad = navigator.userAgent.match(/iPad/i) != null;
Cdigo 2 - PHP
// android
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'android') !== false) { // && stripos($ua,'mobile') !==
false) {
header('Location: http://android.davidwalsh.name');
exit();
}
// ipad
$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
// iphone/ipod
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||
strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
header('Location: http://yoursite.com/iphone');
exit();
}
Cdigo 3 - HTACCESS
// android
RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$
RewriteRule ^(.*)$ http://android.davidwalsh.name [R=301]
// ipad
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://ipad.yourdomain.com [R=301]
// iphone/ipod
RewriteEngine on
RewriteCond ${HTTP_USER_AGENT} iPhone
RewriteRule .* http://m.tuweb.com
Tcnicas para detectar dispositivos mviles y/o con retina para redirigir el
contenido web
18 July 2013 on HTML 5, JavaScript, PHP, Web, WordPress
Os voy a mostrar unas cuantas maneras de poder detectar los dispositivos mviles a travs
del navegador (User Agent) que est usando el usuario. Los ejemplos son para el lado
servidor, cliente, con CSS y Wordpress, tanto en forma de plugin como en cdigo.
Cuando el navegador le pide al servidor una pgina a su vez tambin enva cierta
informacin acerca del "User Agent". Lo que podramos hacer sera comparar este con un
listado de "User Agents" sobre dispositivos mviles y redirigir al usuario en funcin de su
versin.
El cdigo en s es bastante simple, haremos uso de la funcin preg_match() para comparar
el navegador del usuario con una array que contenga navegadores mviles.
<?php
// Creamos array de mviles
$mobiles = array("iPhone","iPod");
foreach( $mobiles as $mobiles ) {
if( preg_match('#'.$mobile.'#i',$_SERVER['HTTP_USER_AGENT'])){
// Si da 'true' redigirimos el contenido
header('Location:http://mobile.mi_sitio.com/');
exit();
}
}
?>
Este cdigo es muy manejable ya que podramos deshabilitar este testeo via
cookie por si alguno de nuestros visitantes desease ver la versin de escritorio
de nuestra web a travs de un link que coloquemos en el 'footer'. El truco sera
establecer el link de 'yoursite?nomobile=1' para testear la variable antes de la
redireccin, el cdigo quedara de esta manera:
<?php
// Comprobamos si hay 'get', 'post' o 'cookie' para nomobile
if ( isset( $_REQUEST['nomobile']) && true ==
$_REQUEST['nomobile']) {
// Comprobamos si tenemos la cookie establecida para no tener que
llamar al 'get' en la URL todo el tiempo
if(!isset($_COOKIE['nomobile'])){
setcookie('nomobile', 1, (time()+60*24*30));
}
} else {
// Comprobamos si el navegador actual es mvil
$mobiles = array("iPhone","iPod");
foreach( $mobiles as $mobiles ) {
if( preg_match('#'.$mobile.'#i',$_SERVER['HTTP_USER_AGENT'])){
// Si da 'true' redigirimos el contenido
header('Location:http://mobile.mi_sitio.com/');
exit();
}
}
?>
Para detectar a los dispositivos retina de Apple y cargar las imgenes por unas
de alta calidad podemos poner estas lneas de cdigo dentro de la etiqueta
<head>
<link rel="stylesheet" type="text/css" src="estilo_normal.css"/>
<link rel="stylesheet" type="text/css" src="retina.css" media="only
screen and (-webkit-min-device-pixel-ratio:2)"/>
Media queries
Las media queries nos ayudan a aplicar estilos de manera condicional si ciertas
reglas retornan true Se aplican en funcin de las reglas especificadas por
anchura del navegador, del dispositivo o densidad de pxeles.
/* Smartphones (portrait y landscape) */
@media only screen and (min-device-width:320px)
width:480px){
/* Estilos */
}
/* Smartphones (landscape) */
@media only screen and (min-width:321px){
/* Estilos */
}
/* Smartphones (portrait) */
@media only screen and (max-width:320px){
/* Estilos */
}
/* iPads (portrait y landscape) */
@media only screen and (min-device-width:768px)
width:1024px){
/* Estilos */
}
/* iPads (landscape) */
@media only screen and (min-device-width:768px)
width:1024px) and (orientation:landscape){
/* Estilos */
}
/* iPads (portrait) */
@media only screen and (min-device-width:768px)
width:1024px) and (orientation:portrait){
/* Estilos */
}
/* Desktops and Laptops */
@media only screen and (min-width:1224px){
/* Estilos */
}
/* Large Screens */
@media only screen and (min-width:1824px){
/* Estilos */
/* ----------- iPhone 4 and 4S ----------- */
and (max-device-
and (max-device-
and (max-device-
and (max-device-
Nos ofrece un pequeo script en los principales idiomas de programacin (php, javascript,
grails, asp,)
Es suficiente con incluir una linea de cdigo en nuestra pagina para que detecte si nuestro
visitante nos ve a travs de un mvil o de un PC.
Cuando sepamos que quien nos visita es un mvil podremos redirigirle a otra pagina, o
cargar algn CSS especial.
En este pequeo ejemplo que he hecho la pagina nos dice a travs de PHP y de jQuery si le
visitamos desde un mvil o no:
http://www.vissit.com/projects/detectMobile/
Otra alternativa con buena pinta es php-mobile-detect.
http://code.google.com/p/php-mobile-detect/downloads/list
Es una opcin ms completa, ya que nos permite saber que tipo de mvil es (android,
iphone, opera mini,) pero con la limitacin de estar solo disponible para PHP.
Por ltimo, la opcin mas completa es WURFL: http://wurfl.sourceforge.net/
En este caso se valida el user-agent con un XML completsimo (y actualizado
peridicamente) de terminales mviles.
Nos proporciona mucha mas informacin, pero para el caso que yo busco (simplemente
cargar una CSS especifica para mviles) es demasiado pesado y complejo.
Y vosotros conocis alguna otra opcin? Cual os gusta ms?
Cada da el trafico generado desde los terminales mviles es mayor, pero todava son pocas
las paginas web que estn adaptadas para ser vistas correctamente desde dichos dispositivos
(entre ellas las mas).
Por este motivo, estoy empezando a investigar que alternativas gratuitas existen para
controlar quien visita mis web, y en consecuencia presentarles el contenido de un modo o
de otro.
La mas sencilla y que se adapta muy bien a mis necesidades es Detect Mobile Browsers:
http://detectmobilebrowsers.com
Nos ofrece un pequeo script en los principales idiomas de programacin (php, javascript,
grails, asp,)
Es suficiente con incluir una linea de cdigo en nuestra pagina para que detecte si nuestro
visitante nos ve a travs de un mvil o de un PC.
Cuando sepamos que quien nos visita es un mvil podremos redirigirle a otra pagina, o
cargar algn CSS especial.
En este pequeo ejemplo que he hecho la pagina nos dice a travs de PHP y de jQuery si le
visitamos desde un mvil o no:
http://www.vissit.com/projects/detectMobile/
Otra alternativa con buena pinta es php-mobile-detect.
Detectar dispositivos mviles a travs de JavaScript
El nmero de visitas que recibe cualquier sitio Web desde dispositivos mviles no ha
dejado de crecer, por lo que se hace cada vez ms necesario adaptar nuestros sitios a
dichos dispositivos, y as mejorar su usabilidad.
Lo primero que tendremos que hacer, ser detectar el dispositivo desde el cul se est
accediendo a nuestra Web. Para ello, vamos a usar el siguiente cdigo JavaScript, de tal
forma que todas aquellas visitas que procedan desde este tipo de dispositivos, sern
redirigidas a la URL que le indiquemos.
<script type="text/javascript">
var device = navigator.userAgent
if (device.match(/Iphone/i)|| device.match(/Ipod/i)|| device.match(/Android/i)||
device.match(/J2ME/i)|| device.match(/BlackBerry/i)|| device.match(/iPhone|iPad|iPod/i)||
device.match(/Opera Mini/i)|| device.match(/IEMobile/i)|| device.match(/Mobile/i)||
device.match(/Windows Phone/i)|| device.match(/windows mobile/i)||
device.match(/windows ce/i)|| device.match(/webOS/i)|| device.match(/palm/i)||
device.match(/bada/i)|| device.match(/series60/i)|| device.match(/nokia/i)||
device.match(/symbian/i)|| device.match(/HTC/i))
{
window.location = "Aqu debes escribir la ruta (relativa o absoluta) de tu versin mvil,
por ejemplo: version-movil.html";
}
else
{
}
</script>
Para comprobar su funcionamiento, puedes descargar un sencillo ejemplo haciendo clic
aqu - (archivo comprimido: contiene index.html y movil.html).
En index.html se ha aadido el cdigo JavaScript, redireccionando a los usuarios que
accedan desde dispositivos mviles a movil.html
servidor. Por lo general, las condiciones en las que se visita una web desde un smart-phone
no son las mismas que desde un ordenador. Lo normal es tener contratada una tarifa plana
que al llegar a cierta cantidad de datos se satura y adems la conexin 3G es mucho peor
que la proporcionada por una wifi y se va leyendo en el metro o el autobs y... en fin, que
cada dato enviado es una lata.
Por lo tanto, lo mejor es dosificar los datos enviados, es decir, quitar los ms pesados, como
las imgenes, sobre todo cuando no cumplen una funcin comunicativa esencial, sino que
son elementos de diseo ms o menos accesorios. Es el caso de los slides o carruseles de
imgenes.
Existen varias maneras de detectar desde qu dispositivo se est conectando un usuario a
una web, pero quizs sean las que emplean PHP las ms interesantes, ya que, como corre
del lado del servidor, podemos estar seguros de que funcionar siempre. Y lo bueno es
que Serban Ghita y Victor Stanciu han desarrollado una clase que facilita muchsimo este
proceso: Mobile-Detect.
Es fcil de usar:
1. Se descarga desde github y se sube al server:
2. Se incluye en la pgina web mediante la sentencia
require_once ('Mobile_Detect.php');
<?php
if ($detect->isMobile()) {
// Detecta si es un mvil
if ($detect->isTablet()) {
// Si es un tablet
if ($detect->isAndroidOS()) {
// Si es Android
if ($detect->isiOS()){
//Si es iOS
?>
Ahora vamos a decirle que lo que hay entre las lneas 5 y 7, as como lo que hay en la lnea
10, solo se cargue si el dispositivo no es un mvil (si la comprobacin da false).
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <?php require_once ('Mobile_Detect.php');
5. $detect = new Mobile_Detect(); ?>
6. <title></title>
7. <?php if ($detect->isMobile()==false) { ?>
8. <script>
9. // aqu una barbaridad de cdigo y libreras para que funcione el carrusel
10.</script>
11.<?php } ?>
12.</head>
13.<body>
14.<?php if ($detect->isMobile()==false) { ?>
15.// aqu una barbaridad de imgenes muy pesadas para el carrusel
16.<?php } ?>
17.</body>
18.</html>
La forma tradicional: segn la direccin IP
De hecho, hasta hace un tiempo esta era la nica forma de saber la procedencia de un
visitante: tomar la direccin IP (pblica) desde la cual recibimos la peticin y compararla
con una base de datos de IPs con sus posibles localizaciones. Para determinar la IP desde la
cual nos visita el usuario, desde de php sera:
$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR'])
? $_SERVER['HTTP_X_FORWARDED_FOR']
: $_SERVER['REMOTE_ADDR'];
Esta ip no representa el nodo real desde el cual nos visitan, pero usualmente es una buena
aproximacin del origen del usuario.
Existen varias bases de datos dedicadas a recopilar este tipo de informacin, quizs la ms
popular sea la versin gratuita de IPligence (mientras no se use para fines comerciales y se
les d el crdito). Esta versin incluye 150,000 referencias por pas, Microsiervos hizo un
experimento en el que determinaron que es 95% exacta.
Hay que tener en cuenta que IPligence te da su base de datos en formato CSV y con las IPs
convertidas a nmero enteros, pero ellos explican como hacer la conversin de IPs y como
cargar estos datos hacia un gestor de base de datos.
Otra opcin son los datos de Hostip, un proyecto abierto que con ayuda de la comunidad y
algunos ISPs ha ido recolectando sus datos. Puedes descargar la base de datos de IPs, o
usar su API incluso.
Deja que el mismo usuario te diga con HTML5
navigator.geolocation.getCurrentPosition(mostrar_ubicacion);
3}
4
function mostrar_ubicacion(p)
6{
7
alert('posicin: '+p.coords.latitude+','+p.coords.longitude );
8}
La exactitud depender del agente con el cual se intente detectar la ubicacin, los mviles
que cuentan con GPS obviamente sern mucho ms exactos que si se usan las redes WIFI
cercanas para adivinar la ubicacin.
Tal vez convenga usar geo-location-javascript, un framework que agrupa varias propuestas
de Geolocalizacin (aparte de la del W3C) en un solo lugar. Usarlo es igual de sencillo:
?
1if(geo_position_js.init()){
2
geo_position_js.getCurrentPosition(success_callback,error_callback);
3}
4else{
5
6}
7
8function success_callback() {...}
function error_callback() {...}
Hice un pequeo ejemplo usando este framework para que lo prueben en su navegador.
Para ver como funciona, solo vean el cdigo fuente o bien pueden bajarlo desde github
Usar una base de datos de IPs tiene la ventaja que todo funciona detrs, el usuario no debe
autorizar el compartir su ubicacin ni debe usar un navegador moderno; lo malo que estos
datos son precisos solo a nivel de pas y si el hardware del usuario ya cuenta con un GPS no
lo estamos aprovechando. Dependiendo de lo que queramos hacer, probablemente el mejor
enfoque sea usar una base de datos de IPs sencilla y a la vez preguntarle al usuario que nos
comparta su ubicacin.
Conocer e identificar telfonos celulares y mviles Smartphone
Tipo de dispositivo
bro
gecko
Version navegador
40
ID Navegador
moz
nt
SO Versin
6.1
0.00025511
ID Navegador
De forma abreviada devuelve el nombre del navegador, por ejemplo: ie, op,
moz, konq, saf, ns4, webkit y otros. En algunos casos el nombre completo, por
ejemplo: lynx.
Soporte de HTML
Tres valores numricos que indican la capacidad de representar HTML5 ya que
todos los navegadores no lo admiten:
1- EL dispositivo representa formatos anteriores al HTML5
2- Funciones bsicas de HTML5 como audio, video, etc.
3- Soporta correctamente todas las funciones de HTML5.
bit.ly/micelular
Crditos
Script original de: TechPatterns http://techpatterns.com/
En dicho sitio web puedes encontrar y descargar gratis varios scripts en
lenguaje PHP y JavaScript como el que se utiliza en esta pgina y otros para
propsitos similares.
5 trucos interesantes para tu Web en mvil o tablet
jesuse
Blog
7 comments
Y, a continuacin, la funcin que nos devolver el nmero de telfono del telfono donde
se est ejecutando nuestra aplicacin:
private String getPhoneNumber(){
TelephonyManager mTelephonyManager;
mTelephonyManager = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyManager.getLine1Number();
}
David Ortiz
Google+
@DavidOrti
Editor senior en Xataka Android
Publicidad
RSS
Google Plus
Versin mvil
Versin tablet
comentarios 25
Compartir en Facebook Twitter Google+ E-mail
No es algo habitual, pero puede ocurrir: que te compres un telfono y acabes dndote
cuenta de que es falso. Las imitaciones existen en muchos productos y la telefona no es
excepcin, por lo que no seras el primero en caer en la trampa si te dan una de estas
sorpresas.
Vamos a ver cmo detectar este tipo de falsificaciones, que pueden darnos un susto al
hacernos comprar un dispositivo completamente diferente al original. Aunque por fuera nos
pueda parecer idntico a simple vista, estas son las claves que nos pueden hacer sospechar.
Comprueba el IMEI
Pero ponindonos en el peor de los casos, suponiendo que ya nos hemos hecho con uno de
estos telfonos, siempre nos queda la prueba de fuego: verificar el IMEI. El IMEI
(Identidad de Equipo Mvil Internacional, por sus siglas en ingls), el algo as como el
pasaporte de estos dispositivos. Este cdigo es nico, y cada telfono est listado con una
de estas sucesiones de 15 nmeros.
A menudo podemos encontrar este nmero en las facturas de compra, cajas del terminal o
en ste mismo. Con solo pulsar en la aplicacin de telfono *#06#, debera aparecer. Los
telfonos falsificados carecen de IMEI o lo llevan falsificado.
Para comprobarlo, nos puede ser de utilidad verificarlo en alguna base de datos online. Y
como siempre, si nos hemos equivocado, probablemente no seamos los primeros ingenuos
en todo internet. Googlear puede ayudarnos a encontrar casos similares con detalles que
nos pueden venir muy bien a la hora de preveer este tipo de situaciones.
Version mvil (III)
Dos versiones
Versin mvil y escritorio
El "userAgent" es un texto que usan los navegadores para identificarse con los servidores
en Internet y en donde comparten caractersticas y alguna otra informacin til. Con el
"userAgent" podemos saber desde qu navegador o dispositivo nos estn viendo.
Para detectar el "userAgent" con javascript tenemos la propiedad navigator.userAgent,
que nos devuelve el "userAgent", es decir, la informacin sobre el navegador que est
usando el usuario.
Por ejemplo, si queremos ver el navegador que estamos usando en esta pgina utilizaremos
el siguiente cdigo javascript:
navegador=navigator.userAgent;
Ahora si queremos ver el "userAgent" que estamos utilizando, no tenemos ms que sacarlo
en pantalla, por ejemplo en un elemento con id="miuseragent", el cdigo para verlo ser:
document.getElementById("miuseragent").innerHTML=navegador;
Recuerda que este cdigo debes ponerlo dentro de la estructura window.onload =
function(){ ... } ya que la pgina debe haberse cargado.
Siguiendo estos pasos vemos cual es el "userAgent" que ests utilizando:
Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
Puedes comprobar que si abres esta pgina en distintos navegadores saldrn diferentes
"userAgent". El "userAgent" indica no slo el navegador, sino la versin y muchas veces el
sistema operativo o dispositivo que estamos utilizando.
Cada modelo de telfono mvil utiliza un "userAgent" distinto. Esto nos llevara a una lista
interminable de "userAgent" que tendramos que comprobar para saber si el usuario est
utilizando un mvil. Adems estn saliendo constantemente modelos nuevos, por lo que
tendramos que estar renovando la lista.
Sin embargo no debemos desistir, ya que lo que buscamos no es el modelo que tiene el
usuario, sino saber si ste est utilizando un mvil o no. En esto el "userAgent" puede
darnos en la gran mayora de los casos una respuesta.
Los "userAgent" de los dispositivos mviles suelen llevar unos identificadores que nos
indican que estamos utilizando un mvil. Estos suelen ser la palabra "Mobile", o la marca o
sistema operativo particular que utiliza el telfono.
Por tanto el problema se reduce a buscar en el "userAgent" este identificador. Con la
siguiente lista de palabras podemos localizar la gran mayora de telfonos mviles:
"Mobile", "iPhone", "iPod", "BlackBerry", "Opera mini", "Sony", "MOT" (Motorola),
"Nokia", "samsung".
Por tanto, comprobaremos si en el "userAgent" est alguna de estas palabras, y si es as
redireccionaremos la pgina hacia su version mvil.
No olvidemos que el usuario puede entrar en nuestra web, no por la pgina principal o
"index", sino por cualquier otra pgina, por lo que esta operacin debe hacerse para todas
las pginas de nuestra web que tengan versin para mvil.
Proponemos aqu un cdigo javascript para redireccionar una pgina hacia su versin mvil
cuando el usuario est utilizando un mvil para ver la pgina. El cdigo quedar as:
navegador=navigator.userAgent; //busco el "userAgent" del usuario.
//lista de palabras del "userAgent" en los mviles
moviles=["Mobile","iPhone","iPod","BlackBerry","Opera
Mini","Sony","MOT","Nokia","samsung"];
detector=0; //Variable que detectar si se usa un mvil
for (i in moviles) { //comprobar en la lista ...
//si el mtodo "indexOf" no devuelve -1, indica que la palabra est en
el "userAgent"
compruebo=navegador.indexOf(moviles[i]);
if (compruebo>-1) {
detector=1; //Si es un mvil, cambio el valor del detector
}
}
if (detector==1) { //si es un mvil redirecciono la pgina.
location.href="movil/index.php"; //Se redirecciona hacia la versin
mvil.
}
El cdigo para redireccionar la pgina hacia su versin mvil puede ser parecido a este. Lo
hemos comentado para una mejor comprensin. En resumen, hemos buscado el
"userAgent", comprobamos si ste es el de un mvil, y si es as redireccionamos la pgina
hacia su versin movil.
Para redireccionar un pgina hacia su versin mvil utilizando un cdigo PHP haremos
algo similar a lo que hemos visto con javascript. Es decir comprobamos el "userAgent", y si
ste es de un mvil, redireccionamos la pgina. Proponemos aqu el siguiente cdigo, que
sigue los mismos pasos que el cdigo visto para javascript:
$miuseragent=$_SERVER['HTTP_USER_AGENT']; //Busco el "userAgent" del
usuario
//lista de palabras del "userAgent" en los mviles
$moviles=array("Mobile","iPhone","iPod","BlackBerry","Opera
Mini","Sony","MOT","Nokia","samsung");
$detector=0; //variable para detectar si el usuario utiliza un mvil
(0=no, 1=si);
$numMoviles=count($moviles); //nmero de palabras en la lista
for ($i=0;$i<$numMoviles;$i++) { //comprobar en la lista ...
$comprobar=strpos($miuseragent,$moviles[$i]);
if ($comprobar!="") { //si detectamos un mvil ...
$detector=1; //cambiamos la variable de deteccin.
}
}
if ($detector==1) { //si es un mvil redireccionamos la pgina.
header("Location:movil/index.php");
}
El cdigo est comentado para indicar lo que estamos haciendo en cada paso. Los pasos
que damos son lo mismos que en javascript.
Este cdigo es conveniente ponerlo al principio de la pgina, antes del HTML, de esta
manera nos redireccionar hacia la versin web antes de cargar la pgina en versin
escritorio.
No olvidemos que el usuario no tiene porqu entrar en nuestra web por su pgina de inicio,
por lo que todas las pginas deberan disponer de un redireccionamiento hacia su versin
mvil, bien sea hacia la pgina de inicio o hacia la pgina que se abre en su versin mvil.
Veremos en la siguiente pgina una serie de herramientas para comprobar la versin mvil
mientras la vamos creando, Estas son herramientas que emulan la pgina vista desde un
telfono mvil u otros dispositivos.