Sto cercando di rilevare se l'utente sta utilizzando Windows 11 per servire i file binari corretti quando si fa clic su un pulsante di download. Ho trovato Microsoft suggerimento per come fare qui. Si consiglia di utilizzare la navigator.userAgentData.getHighEntropyValues
funzione che restituisce una promessa che contiene la versione della piattaforma. Ecco il codice di essi suggeriscono:
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");
}
});
Il mio problema è che questa funzione è asincrona e restituisce una promessa, invece di restituire il valore. Io non voglio convertire tutto il codice che uso per analizzare gli agenti utente per ogni piattaforma in funzione async.
In un primo momento, ho pensato di utilizzare attendono invece di usare la promessa di simile a questo:
let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
Tuttavia, questo significa che ho bisogno di fare la funzione che contiene async. E dal momento che questo stesso codice deve lavorare su vecchi browser che non supportano async e quelli che lo fanno, io non posso farlo.
C'è un modo per rilevare se l'utente sta utilizzando Windows 11, senza che questa API? O utilizzando questa API, ma in un modo che non richiede async?