2010-02-12 145 views
7

我正在开发移动版本的网站。我正在使用此Javascript检测并重定向用户:Android模拟器浏览器检测

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

适用于iPhone和iPod,但Android没有成功。我在Eclipse中使用Android模拟器。我没有一个Android小工具来实际测试它。

我做错了什么?任何人有同样的问题?

回答

12

您应该使用location.replace,而不是window.location的

例子:

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

我用这个代码,它适用于iPhone/iTouch的和Android手机/设备。

+0

非常感谢,先生。 :) – Vitor 2010-03-08 01:39:27

+0

这也帮助我了。为了清楚起见,Android似乎不支持windows.location。 location.replace()工作正常。 – Symmetric 2011-01-31 08:53:06

3

这里是我的JavaScript函数来检测的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

谢谢先生,我一直在寻找这个。 – nym 2013-03-12 03:34:55

0

window.location的不Android中运行?真?在Android 2.3.4上似乎适合我。你们在什么版本的Android中使用了无法让window.location在浏览器中成功加载新网址的地方?