在升級了 Windows11 系統之後,網站判斷系統版本時會用舊顯示使用的是 Windows10 系統,那這是怎麼回事呢?
造成這個問題的原因,主要是以往在開發這種判斷算法的時候,大多數開發者都會使用判斷 User-Agent 的形式來進行系統版本判斷,但是升級了 Windows11 之後,系統瀏覽器的 User-Agent 依舊還是 Windows10 的 User-Agent,下面是微軟官方給出的方法:
User-Agent 字串不會區分 Windows 11 和 Windows 10,或區分 CPU 架構。 我們不建議使用 User-Agent 字串來擷取使用者代理程式資料。 不支援用戶端提示 User-Agent 瀏覽器將無法區分 Windows 11 和 Windows 10,或 CPU 架構。
如何判斷系統版本呢?微軟的解決方法可以參考《使用User-Agent用戶端提示偵測Windows 11和 CPU 架構》,下面的程式碼僅列出分辨 Win10 還是 Win11 。
我們首先嵌入 Java Script 判定 majorPlatformVersion 是否大於等於 13,把結果寫進 cookie 或其他變數值 ,這兒使用寫入 cookie 的方法。
navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
document.cookie = "win11=true;path=/";
}
}
});
<?php
if(isset($_COOKIE['win11'])) {
$win11 = true;
}
?>
|