1. 通常的設備判斷方式
通常在進行如下判斷時,常使用navigator.userAgent
。
(1) 移動端還是PC
function isMobile(){
return /Mobile/i.test(navigator.userAgent);
}
(2) 安卓還是iOS
isIOS() {
return /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)
}
isAndroid(){
return (/(Android)/i.test(navigator.userAgent)
}
(3) 是否用微信打開
isWechat(){
return (/(MicroMessenger)/i.test(navigator.userAgent)
}
2. iOS 13的問題
使用iOS 13下的移動設備,Safari默認開啓請求桌面端的網站。
navigator.userAgent
在Mac在safari下顯示的:
“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15”
而在ipad上顯示:
所以該屬性無法進行區分。
3. iOS 13下如何判斷設備
只能用GPU來判斷。例如:
(function () {
var canvas = document.createElement('canvas'),
gl = canvas.getContext('experimental-webgl'),
debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
console.log(gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL));
})();
可參考: https://51degrees.com/blog/device-detection-for-apple-iphone-and-ipad