設為首頁收藏本站

會員名稱  取回密碼
 註冊
img_loading
智能检测中
搜尋
熱搜: Redump discuz
檢視: 241|回覆: 1

【教學】 Server 端如何判斷是否 Windows11

[複製連結]
發表於 2023年11月17日 14:47:35 | 顯示全部內容 |閱讀模式
字體大小 16px
10px 32px
在升級了 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 的方法。

  1. navigator.userAgentData.getHighEntropyValues(["platformVersion"])
  2. .then(ua => {
  3.   if (navigator.userAgentData.platform === "Windows") {
  4.    const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
  5.    if (majorPlatformVersion >= 13) {
  6.     document.cookie = "win11=true;path=/";
  7.    }
  8.   }
  9. });

  1. <?php
  2. if(isset($_COOKIE['win11'])) {
  3. $win11 = true;
  4. }
  5. ?>

作者文章推薦
發表於 2023年11月19日 13:43:00 | 顯示全部內容
感謝大大分享好教程
我要回覆
懶得打字嗎?讓本助手協助你 【使用進階編輯器請點選右方進階模式】
您需要登入後才可以回覆 登入 | 註冊

本版積分規則

手機版|Archiver|漁家小舖

GMT+8, 2025年3月10日 01:21 , Processed in 15.001301 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回覆 返回頂端 返回清單