在实际业务中,很可能会根据设备展示不同的业务需求或UI;那就需要识别设备信息。如使用正则表达式、match、includes、navigator等方法实现,那我们就写一个结合多种方法,确保更高的准确性函数。
获取用户代理字符串和平台信息
const userAgent = navigator.userAgent.toLowerCase();
const platform = navigator.platform.toLowerCase();
- navigator.userAgent 返回一个包含浏览器信息的字符串,例如用户使用的操作系统和浏览器版本。
- navigator.platform 返回一个表示用户操作系统的字符串。
- toLowerCase() 方法将字符串转换为小写,以便进行不区分大小写的比较。
检测 Android 设备
if (userAgent.includes("android") || platform.includes("android")) {
return "android";
}
- userAgent.includes("android") 检查 userAgent 字符串中是否包含 "android"。
- platform.includes("android") 检查 platform 字符串中是否包含 "android"。
- 如果任意一个条件为真,则返回 "android"。
检测 iOS 设备
else if (userAgent.includes("iphone") || userAgent.includes("ipad") || userAgent.includes("ipod") || platform.includes("iphone") || platform.includes("ipad") || platform.includes("ipod")) {
return "ios";
}
- userAgent.includes("iphone") 检查 userAgent 字符串中是否包含 "iphone"。
- userAgent.includes("ipad") 检查 userAgent 字符串中是否包含 "ipad"。
- userAgent.includes("ipod") 检查 userAgent 字符串中是否包含 "ipod"。
- platform.includes("iphone") 检查 platform 字符串中是否包含 "iphone"。
- platform.includes("ipad") 检查 platform 字符串中是否包含 "ipad"。
- platform.includes("ipod") 检查 platform 字符串中是否包含 "ipod"。
- 如果任意一个条件为真,则返回 "ios"。
默认返回值
return "";
- 如果上述所有条件都不满足,则返回空字符串 ""。
完整代码
function detectDevice() {
const userAgent = navigator.userAgent.toLowerCase();
const platform = navigator.platform.toLowerCase();
if (userAgent.includes("android") || platform.includes("android")) {
return "android";
} else if (userAgent.includes("iphone") || userAgent.includes("ipad") || userAgent.includes("ipod") || platform.includes("iphone") || platform.includes("ipad") || platform.includes("ipod")) {
return "ios";
}
return "";
}
总结
这段代码通过检查 userAgent 和 platform 字符串中的特定关键词来判断设备类型。
如果检测到 "android" 关键词,则返回 "android";
如果检测到 "iphone"、"ipad" 或 "ipod" 关键词,则返回 "ios";否则返回空字符串 ""。
希望这些对你有帮助!