首页 > 解决方案 > 使用 javascript 确定操作系统

问题描述

我正在寻找一种在 Javascript 中获取客户端操作系统的通用方法。许多记录在案的解决方案都使用用户代理,我遇到过类似的堆栈溢出问题/答案,这些问题已经过时。下面提供了一个示例函数,但我想知道是否有更全面的版本符合以下准则:

下面的例子没有太多考虑就放在一起,我正在寻找一个更好的版本

function getOS() {
  var osStr;
  var ua = navigator.userAgent.toLowerCase();

  if (ua.indexOf("windows xp") !== -1) {
    osStr = "WindowsXP";
  } else if (ua.indexOf("windows nt 6.1") !== -1) {
    osStr = "Windows7";
  } else if (ua.indexOf("windows nt 10.0") !== -1) {
    osStr = "Windows10";
  } else if (ua.indexOf("iemobile") !== -1 || ua.indexOf("windows phone") !== -1) {
    osStr = "WindowsMobile";
  } else if (ua.indexOf("windows") !== -1) {
    osStr = "Windows";
  } else if (ua.indexOf("ipad") !== -1) {
    osStr = "ipad";
  } else if (ua.indexOf("ipod") !== -1) {
    osStr = "iTouch)";
  } else if (ua.indexOf("iphone") !== -1) {
    osStr = "iPhone)";
  } else if (ua.indexOf("cros") !== -1) {
    osStr = "ChromeOS";
  } else if (ua.indexOf("android") !== -1) {
    osStr = "Android";
  } else if (ua.indexOf("blackberry") !== -1) {
    osStr = "Blackberry";
  } else if (ua.indexOf("palm") !== -1) {
    osStr = "PalmOS";
  } else if (ua.indexOf("kindle") !== -1) {
    osStr = "Kindle";
  } else if (ua.indexOf("ubuntu") !== -1) {
    osStr = "Ubuntu";
  } else if (ua.indexOf("linux") !== -1) {
    osStr = "Linux";
  } else if (ua.indexOf("nix") !== -1) {
    osStr = "UNIX";
  } else {
    osStr = "Unknown";
  }

  return osStr;
}

标签: javascriptuser-agent

解决方案


有很多不同的用户代理字符串见http://www.user-agents.org/

筛选所有这些是不切实际的。根据您的用例,过滤掉您关心的那些会更有益。

但是,您可以使用一些 API,它们已经为您完成了艰苦的工作 https://developers.whatismybrowser.com/api/features/user-agent-parse是一个很棒的工具,可以为您解析用户代理字符串

这是一个更全面的列表,其中包含每个 https://www.whatsmyua.info/的示例


推荐阅读