delphi 如何在TMS Web Core网站中获取用户的操作系统?

gdx19jrr  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(112)

我想知道用户的计算机上使用的操作系统(Windows、MacOS、Linux、Android、iOS等)。
在FMX中,我可以简单地从System.SysUtils执行TOSVersion.ToString来获得操作系统,但在TMS Web Core中它不起作用。我得到以下错误:
[错误]找不到标识符“TOSVersion”
如何在TMS Web Core中使用 Delphi 检查或获取操作系统?

myss37ts

myss37ts1#

您可以使用以下函数:

function GetOperatingSystem(): String;
var
  UserAgent: String;
begin
  UserAgent := window.navigator.userAgent;
  Result := 'Unknown';
  if (UserAgent.indexOf('Windows NT 10.0') <> -1) then Result := 'Windows 10'
  else if (UserAgent.indexOf('Windows NT 6.2') <> -1) then Result := 'Windows 8'
  else if (UserAgent.indexOf('Windows NT 6.1') <> -1) then Result := 'Windows 7'
  else if (UserAgent.indexOf('Windows NT 6.0') <> -1) then Result := 'Windows Vista'
  else if (UserAgent.indexOf('Windows NT 5.1') <> -1) then Result := 'Windows XP'
  else if (UserAgent.indexOf('Windows NT 5.0') <> -1) then Result := 'Windows 2000'
  else if (UserAgent.indexOf('Windows Phone') <> -1) then Result := 'Windows 10 Mobile'
  else if (UserAgent.indexOf('iPhone') <> -1) then Result := 'iOS'
  else if (UserAgent.indexOf('Mac') <> -1) then Result := 'MacOS'
  else if (UserAgent.indexOf('AppleTV') <> -1) then Result := 'tvOS'
  else if (UserAgent.indexOf('Android') <> -1) then Result := 'Android'
  else if (UserAgent.indexOf('Linux') <> -1) then Result := 'Linux'
  else if (UserAgent.indexOf('X11') <> -1) then Result := 'UNIX';
end;

但请注意,这并不总是100%准确。userAgent可以通过浏览器或代码进行更改。它还将Windows 11检测为Windows 10。
然而,有一个规范提案旨在帮助解决上述问题:https://wicg.github.io/ua-client-hints/
还有一个this (detectOS.js) JavaScript库,您可以使用它来检测操作系统。

相关问题