判断设备类型,兼容了部分ipad上有开启电脑模式的操作,导致设备被识别为ipad而不是windows或者其他
解决方案:
/**
* 判断设备是否为 Android,包含**桌面模式**
* @see https://useragentstring.com/ ua 检测
* @returns
*/
function isAndroid() {
const ua = window.navigator.userAgent;
return /android/i.test(ua) // android
|| /miuibrowser/i.test(window.navigator.userAgent) // 小米浏览器
|| (/huawei/i.test(window.navigator.appPackageName)) // 华为浏览器
|| ((/linux/i.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0)) // android 系统平板
}
function isMac() {
const ua = window.navigator.userAgent;
return /mac/i.test(window.navigator.platform) || /mac os/i.test(ua)
}
function isWin() {
const ua = window.navigator.userAgent;
return /win/i.test(window.navigator.platform) || /windows/i.test(ua)
}
function isIOS() {
const ua = window.navigator.userAgent;
return /(ipad|ios)/i.test(ua) || (!(/chrome/i.test(ua)) && /safari/i.test(ua) && window.navigator.maxTouchPoints > 0) // Safari 桌面模式
}
function isIPad() {
const ua = window.navigator.userAgent;
return /ipad/i.test(ua) || (!(/chrome/i.test(ua)) && /safari/i.test(ua) && window.navigator.maxTouchPoints > 0) // Safari 桌面模式
}
/**
* 判断设备是否为 Android,包含**桌面模式**
* @see https://useragentstring.com/ ua 检测
* @returns
*/
class DeviceSDK {
constructor() {
}
isWindows = () => {
const ua = window.navigator.userAgent;
return /win/i.test(window.navigator.platform) || /windows/i.test(ua)
};
isMac = () => {
const ua = window.navigator.userAgent;
return /mac/i.test(window.navigator.platform) || /mac os/i.test(ua)
};
isAndroid = () => {
const ua = window.navigator.userAgent;
return /android/i.test(ua) // android
|| /miuibrowser/i.test(window.navigator.userAgent) // 小米浏览器
|| (/huawei/i.test(window.navigator.appPackageName)) // 华为浏览器
|| ((/linux/i.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0)) // android 系统平板
};
isIOS = () => {
const ua = window.navigator.userAgent;
return /(ipad|ios)/i.test(ua) || (!(/chrome/i.test(ua)) && /safari/i.test(ua) && window.navigator.maxTouchPoints > 0) // Safari 桌面模式
};
isIPad = () => {
const ua = window.navigator.userAgent;
return /ipad/i.test(ua) || (!(/chrome/i.test(ua)) && /safari/i.test(ua) && window.navigator.maxTouchPoints > 0) // Safari 桌面模式
};
}
const DVJS = new DeviceSDK();
export default DVJS;