2010-02-12 15 views
7

Sto sviluppando una versione mobile di un sito Web. Attualmente sto usando questa Javascript per rilevare e reindirizzare l'utente:Rilevatore browser emulatore Android

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

funziona bene con iPhone e iPod, ma senza successo con Android. Sto usando l'emulatore Android in Eclipse. Non ho un gadget Android per testarlo veramente.

Sto facendo qualcosa di sbagliato? Qualcuno ha lo stesso problema?

risposta

12

Si dovrebbe usare location.replace invece di window.location

Esempio:

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

Ho usato questo codice e funziona su iPhone/iTouch e telefoni/dispositivi Android.

+0

Grazie mille, signore. :) – Vitor

+0

Anche questo mi ha aiutato. Per essere chiari, sembra che windows.location non sia supportato su Android. location.replace() funziona bene. – Symmetric

3

Ecco la mia funzione JavaScript per rilevare 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

Grazie signore, ho cercato questo. – nym

0

window.location non funziona in Android? Veramente? Sembra funzionare bene per me su Android 2.3.4. Quale versione (s) di Android avete utilizzato dove non è possibile ottenere window.location per caricare con successo un nuovo URL nel browser?