Snažím sa zistiť, či užívateľ používa Windows 11 s cieľom slúžiť správne binárne súbory, keď kliknete na tlačidlo preberania. Zistil som, Microsoft je návrh na tom, ako to urobiť tu. Tie naznačujú, pomocou navigator.userAgentData.getHighEntropyValues
funkcia, ktorá vráti sľub obsahujúce platforma verziu. Tu je kód tie naznačujú:
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");
}
});
Môj problém je, že táto funkcia je asynchrónny a vráti sľub miesto vrátenie hodnoty. Nechcem mať previesť všetky kódu som sa používajú na analýzu užívateľských agentov pre každú platformu v async funkciu.
Najprv som si myslel, že by použitie čakajú namiesto pomocou sľubu, ako je tento:
let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
To však znamenalo, že by som potrebné, aby funkciu, ktorá ho obsahuje async. A keďže tento rovnaký kód musí pracovať na starších prehliadačoch, ktoré nepodporujú async a tie, ktoré robia, nemôžem to urobiť.
Existuje spôsob, ako zistiť, či je užívateľ pomocou Windows 11 bez tohto API? Alebo pomocou tejto API, ale spôsobom, ktorý nevyžaduje async?