Kullanıcının bir indirme düğmesine tıkladıklarında doğru ikili dosyaları sunmak için Windows 11 kullanıp kullanmadığını tespit etmeye çalışıyorum. Ben buldum Microsoft önerisi için ne yapmak bu işte. Onlar kullanmanızı öneririz navigator.userAgentData.getHighEntropyValues
platform sürümünü içeren bir söz döndüren işlev. İşte önerdikleri kod:
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");
}
});
Benim sorunum, bu işlevin eşzamansız olması ve değeri döndürmek yerine bir söz döndürmesidir. Her platform için kullanıcı aracılarını ayrıştırmak için kullandığım tüm kodları eşzamansız bir işleve dönüştürmek istemiyorum.
İlk başta, böyle bir sözü kullanmak yerine await kullanacağımı düşündüm:
let ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
Ancak bu, onu içeren işlevi zaman uyumsuz hale getirmem gerektiği anlamına geliyordu. Ve aynı kodun async'i desteklemeyen eski tarayıcılarda ve bunu yapanlarda çalışması gerektiğinden, bunu yapamam.
Kullanıcının bu API olmadan Windows 11 kullanıp kullanmadığını tespit etmenin bir yolu var mı? Veya bu API'yi kullanarak ancak eşzamansızlık gerektirmeyen bir şekilde mi?