Estoy tratando de detectar si el usuario está utilizando Windows 11 con el fin de servir los archivos binarios correctos cuando se haga clic en un botón de descarga. He encontrado Microsoft sugerencia de cómo hacerlo aquí. Ellos sugieren que el uso de la navigator.userAgentData.getHighEntropyValues
función que devuelve una promesa que contiene la versión de la plataforma. Aquí está el código que sugieren:
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");
}
});
Mi problema es que esta función es asincrónico y devuelve una promesa en lugar de devolver el valor. Yo no quiero tener que convertir todo el código que utilizo para analizar los agentes de usuario para cada plataforma en asincronica función.
Al principio, pensé que iba a usar esperan en lugar de utilizar la promesa como esta:
let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
Sin embargo, esto significaba que iba a necesitar para hacer la función que contiene de forma asincrónica. Y desde este mismo código se necesita para trabajar en los navegadores antiguos que no soportan asíncrona y los que lo hacen, yo no puedo hacer eso.
Hay una forma de detectar si el usuario está utilizando Windows 11 sin esta API? O el uso de esta API, pero de una manera que no requiere de async?