我想如果检测的用户是使用Windows11,以便为正确的二进制文件的时候他们击一下按钮。 我已经找到了微软的建议对于如何做到这一点 在这里. 他们建议使用 navigator.userAgentData.getHighEntropyValues
功能返回一个承诺包含的平台的版本。 这里是代码,他们建议:
navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 or later");
}
else if (majorPlatformVersion > 0) {
console.log("Windows 10");
}
else {
console.log("Before Windows 10");
}
}
else {
console.log("Not running on Windows");
}
});
我的问题是,这个功能是异步的和返回的承诺,而不是返回的价值。 我不想有把所有的代码我用来分析用户的代理,为每一个平台,在一个异功能。
起初,我想我会使用的等待而不是使用该承诺是这样的:
let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
然而,这意味着,我需要做的功能,其中包含它异步. 而且,由于这同一个代码需要的工作对旧的浏览器,不支持同步和那些做什么,我不能这样做。
有没有方法检测,如果用户是使用Windows11如果没有这API? 或者使用这API,但在一个方式,不需要同步?