回答
看看是:http://davidwalsh.name/detect-android
的JavaScript:
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';
}
PHP:
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'android') !== false) { // && stripos($ua,'mobile') !== false) {
header('Location: http://android.davidwalsh.name');
exit();
}
js版,iPad的捕捉太:
var is_mobile = /mobile|android/i.test (navigator.userAgent);
無法正常工作,因爲它捕獲了許多設備,而不僅僅是問題所需的Android。 – NickG 2013-12-20 09:57:49
至少使用這樣的東西:/android.*(?=mobile)/i.test(navigator.userAgent);檢測Android手機。但是這個正則表達式包含「昂貴的」量詞,所以Philip的2個獨立測試的答案可能更合適。 – 2015-07-31 16:07:14
這個單線劃線怎麼樣?
var isAndroid = /(android)/i.test(navigator.userAgent);
i
修飾符用於執行不區分大小寫的匹配。從科爾多瓦AdMob的測試項目採取
技術:https://github.com/floatinghotpot/cordova-admob-pro/wiki/00.-How-To-Use-with-PhoneGap-Build
;(function() {
var redirect = false
if (navigator.userAgent.match(/iPhone/i)) {
redirect = true
}
if (navigator.userAgent.match(/iPod/i)) {
redirect = true
}
var isAndroid = /(android)/i.test(navigator.userAgent)
var isMobile = /(mobile)/i.test(navigator.userAgent)
if (isAndroid && isMobile) {
redirect = true
}
if (redirect) {
window.location.replace('jQueryMobileSite')
}
})()
我覺得米哈爾的回答是最好的,但我們可以把它更進一步,動態加載一個Android CSS按原來的問題:
var isAndroid = /(android)/i.test(navigator.userAgent);
if (isAndroid) {
var css = document.createElement("link");
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
css.setAttribute("href", "/css/android.css");
document.body.appendChild(css);
}
爲什麼你想要這樣做,而你可以使用媒體查詢? JS設備檢測應僅用於增強功能,如添加邀請以安裝您的應用程序。頁面渲染永遠不應該依賴它,因爲你會遇到性能問題和可怕的可用性經驗。 – camilokawerin 2016-04-01 22:13:54
@camilokawerin您的回覆應該直接發給作者。我只是在回答他的問題。有些情況下,你想要特定於平臺的CSS。例如,如果您希望界面的視覺樣式與設備匹配。 – drlarsen 2016-04-05 21:15:47
這裏不需要jQuery。如前所述,您應該使用用戶代理屬性對其進行檢查。如果你對檢測其他平臺感興趣,或者只是在移動設備上感興趣,我寫了這個可以檢測到的is-mobile component。
隨意導入和使用如在這些例子:
isMobile.Android() => true/false
isMobile.iOS() => true/false
isMobile.Windows() => true/false
isMobile.KindleFire() => true/false
isMobile.any() => true/false
您的解決方案非常棒,但由於包含「android」關鍵字匹配的Mobile Edge用戶代理,因此它在檢查android時是否需要檢查它是否不是Windows。當然,這是一個小問題,因爲缺乏實際的Windows Phone設備。到目前爲止,這是我看到的最好的一頁。 – Felype 2017-06-07 13:05:26
感謝您輸入@Felype!我已經更新了我的解決方案來處理您提到的邊緣案例。 – 2017-06-15 07:45:47
- 1. Android手機或Android平板電腦通過http標頭檢測
- 2. IE9通過WURFL檢測爲手機
- 3. 從手機Android檢測ADB
- 4. Android - 手機邊緣檢測
- 5. 通過JavaScript檢測並區分Android平板電腦與Android手機?
- 6. 通過Ionic檢測耳機
- 7. iPhone手機通話檢測軟件
- 8. Android:檢測用戶篡改手機
- 9. Android檢測到手機鎖定事件
- 10. Android檢測從手機轉向
- 11. 通過查看視口是否受到檢測來檢測手機
- 12. 我們可以通過imei號碼檢測手機類型(android/symbian等)嗎?
- 13. JavaScript |通過瀏覽器/手機類型檢測WebKit
- 14. 通過計算機視覺強大的手部檢測
- 15. 通過網絡服務器檢測手機
- 16. Android手勢檢測
- 17. 如何通過ImageView檢測手勢?
- 18. 通過CoreMotion檢測Shake手勢
- 19. 通過Android手機測試應用程序
- 20. 重啓Android手機通過代碼
- 21. 通過手機調試Android內核
- 22. 通過GPIO中斷喚醒android手機
- 23. Android:如何通過PC訪問手機?
- 24. 以屏幕的screeshot通過Android手機
- 25. 通過藍牙控制Android手機
- 26. 檢測手機抖動
- 27. Acelerometer:搖晃手機檢測
- 28. 手機網站檢測
- 29. 欺騙WURFL手機檢測
- 30. 自動檢測手機
你的先生是一個傳奇。 – Xavier 2011-05-17 13:30:23
別忘了檢查Android平板電腦:http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html – 2011-05-17 13:35:33
值得注意的是,這並不總是爲Android設備工作,例如,由Kindle Fire HD設備報告的用戶代理根本不包含「android」這個詞。 – djbp 2013-06-11 13:54:21