在升級了 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;
- }
- ?>
|