2010-02-12 17 views
7

Estoy desarrollando una versión móvil de un sitio web. Actualmente estoy usando este Javascript para detectar y redirigir al usuario:Android emulator browser detection

if((navigator.userAgent.match(/iPhone/i)) || 
       (navigator.userAgent.match(/Android/i)) || 
       (navigator.userAgent.match(/iPod/i))) 
     { 
     window.location = "http://sitename.com/m/"; 
    } 

funciona bien con el iPhone y el iPod, pero sin éxito con Android. Estoy usando el emulador de Android dentro de Eclipse. No tengo un dispositivo Android para probarlo.

¿Estoy haciendo algo mal? ¿Alguien tiene el mismo problema?

Respuesta

12

Debe utilizar location.replace en lugar de window.location

Ejemplo:

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/iPod/i))) { 
    location.replace("http://sitename.com/m/"); 
} 

que utiliza este código y que funciona en el iPhone/iTouch y los dispositivos/teléfonos android.

+0

Muchas gracias, señor. :) – Vitor

+0

Esto me ayudó también. Para que quede claro, parece que windows.location no es compatible con Android. location.replace() funciona bien. – Symmetric

3

Aquí es función de JavaScript mina para detectar el dispositivo Android:

function isAndroid() { 
    var ua = navigator.userAgent; 
    return ua.match(/Android/) 
     || ua.match(/Dalvik/) 
     || ua.match(/GINGERBREAD/) 
     || ua.match(/Linux;.*Mobile Safari/) 
     || ua.match(/Linux 1\..*AppleWebKit/) 
}; 
+1

Gracias señor, he estado buscando esto. – nym

0

window.location no funciona en Android? De Verdad? Parece funcionar bien para mí en Android 2.3.4. ¿Qué versión (s) de Android usaron ustedes donde no pudieron obtener window.location para cargar con éxito una nueva URL en el navegador?