iT邦幫忙

1

javaScript 取得 macOS 的版本號問題

  • 分享至 

  • xImage

想請問一下各位高手,我使用 navigator.userAgent 語法去抓目前mac的版本號,不過發現顯示的版本號,跟實際的有落差,請問有沒有方法可以解決,謝謝
https://ithelp.ithome.com.tw/upload/images/20230215/20129747tdZzCt3EMU.png

(上圖顯示是10.15.7版,但我的電腦已經更新到 13.2了)

froce iT邦大師 1 級 ‧ 2023-02-15 11:22:39 檢舉
沒有,UA 是瀏覽器送出的,不是抓取OS版本。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
Ray
iT邦大神 1 級 ‧ 2023-02-15 11:49:58
最佳解答

這是因為在 Mac OS 的版本 10.15.7 (也就是 Catalina) 中,Apple 在 User Agent 中新增了一個新的欄位:AppleWebKit/605.1.15,而這個欄位也是判斷瀏覽器版本和支援的功能的重要依據之一。

當你在 Mac OS 的版本高於 10.15.7 的系統中使用瀏覽器,例如 Safari、Chrome、Firefox 等等,當瀏覽器回應 User Agent 時,會包含這個新的欄位,因此其他網站可以依據這個欄位判斷瀏覽器版本和支援的功能。但是,為了確保新的欄位不會對現有的網站造成影響,Apple 仍然會將操作系統版本號降為 10.15.7,以確保現有的 User Agent 的格式不會被打破。

--------- (資訊揭露: 以上內容皆由 ChatGPT 產生)

兩年前 MacOS 11 剛問世的時候, 曾經造成用 Unity 舊版開發的 WebGL 網站遊戲, 會全部故障. 為了暫解這個問題, 於是 Firefox 和 Safari 開發團隊決議, 在 MacOS 11+ 版以後的 User Agent, 都自動降級只回報出 10.15.7, 後來 Chrome 也跟進.

所以對 MacOS 的版本判讀, 不能只依賴 User Agent, 還要去看 AppleWebKit 才知道.

相關的 Bug 討論在此:
https://chromestatus.com/feature/5452592194781184
https://bugs.chromium.org/p/chromium/issues/detail?id=1171998
https://bugs.webkit.org/show_bug.cgi?id=217364#attach_410611
https://bugzilla.mozilla.org/show_bug.cgi?id=1679929
https://bugs.chromium.org/p/chromium/issues/detail?id=1175225
https://issuetracker.unity3d.com/issues/unity-webgl-builds-do-not-run-on-macos-big-sur
https://bugzilla.mozilla.org/show_bug.cgi?id=1680516#c15
https://bugs.webkit.org/show_bug.cgi?id=213622

janlin002 iT邦好手 1 級 ‧ 2023-02-15 13:37:02 檢舉

好的,我再研究一下,謝謝

我要發表回答

立即登入回答