2010-02-12 226 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在瀏覽器中成功加載新網址的地方?