JavaScript 判断当前移动设备是IOS或Android

261 阅读1分钟

在实际业务中,很可能会根据设备展示不同的业务需求或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 "";
}
总结

这段代码通过检查 userAgentplatform 字符串中的特定关键词来判断设备类型。

如果检测到 "android" 关键词,则返回 "android";

如果检测到 "iphone"、"ipad" 或 "ipod" 关键词,则返回 "ios";否则返回空字符串 ""。

希望这些对你有帮助!