如何使用JavaScript找到操作系统名称和操作系统版本?
当前回答
如果您正在使用Electron创建网站或创建桌面应用程序,您可能需要获取客户端使用的操作系统的信息。在这种情况下,你可以使用全局属性window。navigator。 如果您使用console.log(navigator)在控制台中记录属性,您将看到包含浏览器、操作系统等信息的子属性的整个对象。
同样,如果你想创建一个本地NodeJS应用程序也是可以的!只需使用const os = require("os");;调用os模块。然后在控制台中记录常量。你会得到一个完整的对象,但如果你想看到平台的名称,你可以输入console.log(os.platform());,并确保在os后添加一对圆括号。平台作为平台在这里是一个功能!
希望这能有所帮助!
其他回答
var OSName = "Unknown";
if (window.navigator.userAgent.indexOf("Windows NT 10.0")!= -1) OSName="Windows 10";
if (window.navigator.userAgent.indexOf("Windows NT 6.3") != -1) OSName="Windows 8.1";
if (window.navigator.userAgent.indexOf("Windows NT 6.2") != -1) OSName="Windows 8";
if (window.navigator.userAgent.indexOf("Windows NT 6.1") != -1) OSName="Windows 7";
if (window.navigator.userAgent.indexOf("Windows NT 6.0") != -1) OSName="Windows Vista";
if (window.navigator.userAgent.indexOf("Windows NT 5.1") != -1) OSName="Windows XP";
if (window.navigator.userAgent.indexOf("Windows NT 5.0") != -1) OSName="Windows 2000";
if (window.navigator.userAgent.indexOf("Mac") != -1) OSName="Mac/iOS";
if (window.navigator.userAgent.indexOf("X11") != -1) OSName="UNIX";
if (window.navigator.userAgent.indexOf("Linux") != -1) OSName="Linux";
如前所述,导航器。平台已弃用。我们应该使用导航器。但它仍然缺乏支持(firefox, safari在2022年不支持它)。
注意导航器。userAgentData只适用于通过https兼容的浏览器。
下面是一个脚本,它将使用UserAgentData,并返回到旧的操作方式。
function get_platform() {
// 2022 way of detecting. Note : this userAgentData feature is available only in secure contexts (HTTPS)
if (typeof navigator.userAgentData !== 'undefined' && navigator.userAgentData != null) {
return navigator.userAgentData.platform;
}
// Deprecated but still works for most of the browser
if (typeof navigator.platform !== 'undefined') {
if (typeof navigator.userAgent !== 'undefined' && /android/.test(navigator.userAgent.toLowerCase())) {
// android device’s navigator.platform is often set as 'linux', so let’s use userAgent for them
return 'android';
}
return navigator.platform;
}
return 'unknown';
}
let platform = get_platform();
// examples of use
let isOSX = /mac/.test(platform.toLowerCase()); // Mac desktop
let isIOS = ['iphone', 'ipad', 'ipod'].indexOf(platform.toLowerCase()) !== -1; // Mac iOs
let isApple = isOSX || isIOS; // Apple device (desktop or iOS)
let isWindows = /win/.test(platform.toLowerCase()); // Windows
let isAndroid = /android/.test(platform.toLowerCase()); // Android
let isLinux = /linux/.test(platform.toLowerCase()); // Linux
我不能评论@Ian Ippolito的回答(因为如果我有代表的话我会评论的),但根据他的评论链接,我相当确定你可以找到IOS的Chrome版本。https://developer.chrome.com/multidevice/user-agent?hl=ja列出的UA为:Mozilla/5.0 (iPhone;CPU iPhone OS 10_3像Mac OS X) AppleWebKit/602.1.50 (KHTML,像壁虎)CriOS/56.0.2924.75移动/14E5239e Safari/602.1
所以这应该是可行的:
if ((verOffset = nAgt.indexOf('CriOS')) != -1) {
//Chrome on iPad spoofing Safari...correct it.
browser = 'Chrome';
version = nAgt.substring(verOffset + 6);//should get the criOS ver.
}
我还没能测试一下(否则我会改进他的答案),因为我的iPad在家里,而我在工作,但我想我应该把它放在那里。
我正在使用这个:)
getPlatform() {
const allPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE', 'Android', 'iPhone', 'iPad', 'iPod'];
return allPlatforms.find(item => item === navigator.platform);
}
JavaScript可以访问window.navigator.platform——一个表示浏览器平台的字符串: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/platform
使用它来提取您需要(并且可以)的任何细节。请注意,并不能保证客户端实际使用了该平台,因为这可以很容易地以多种方式进行修改。
试一试:
console.log (window.navigator.platform);
推荐文章
- 截断字符串直接JavaScript
- 我如何使用可选的链接与数组和函数?
- EINVRES请求https://bower.herokuapp.com/packages/失败,提示502
- 使用fetch进行基本身份验证?
- 如何从子组件内部更新React上下文?
- 如何将一个普通对象转换为ES6映射?
- scrollIntoView卷轴太远了
- Angular ng-repeat反过来
- 如何获得请求路径与表达请求对象
- 使用Handlebars 'each'循环访问父对象的属性
- 盎格鲁- ngcloak / ngg展示blink元素
- 禁用表单自动提交按钮单击
- 节点和错误:EMFILE,打开的文件太多
- JavaScript函数中的默认参数值
- 使用RegExp.exec从字符串中提取所有匹配项