HOWTO · JavaScript

在 JavaScript 中檢測瀏覽器版本

在本文中,展示瞭如何在 JavaScript 中檢測瀏覽器版本。

本頁內容

當今世界上有許多具有各種螢幕尺寸的裝置。

但問題是並非所有裝置都可以支援網站上實現的各種功能。

要檢測瀏覽器版本和瀏覽器名稱,我們可以使用 JavaScript 中的 userAgent

使用 userAgent 檢測 JavaScript 中的瀏覽器版本

navigator 是視窗物件的屬性。

要訪問 userAgent,你可以使用 navigator.userAgent 或使用物件解構從導航器中獲取 userAgent

const {userAgent} = navigator
console.log(userAgent);

使用 includes 方法會將字串作為引數返回。該字串有助於檢測瀏覽器,如下所示。

if (userAgent.includes('Firefox/')) {
  console.log(userAgent)
} else if (userAgent.includes('Edg/')) {
  console.log(userAgent)
} else if (userAgent.includes('Chrome/')) {
  console.log(userAgent)
} else if (userAgent.includes('Safari/')) {
  // Safari
}

輸出:

//Mozilla Firefox
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0

//Microsoft Edge 
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.50

// Google Chrome
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

使用 JavaScript 檢測瀏覽器版本

瀏覽器版本及其名稱出現在 userAgent 提供的字串的末尾。

如果你想獲取結尾部分,即瀏覽器版本和名稱而不是整個字串,你可以執行下面的程式碼。

if (userAgent.includes('Firefox/')) {
  console.log(`Firefox v${userAgent.split('Firefox/')[1]}`)
} else if (userAgent.includes('Edg/')) {
  console.log(`Edg v${userAgent.split('Edg/')[1]}`)
} else if (userAgent.includes('Chrome/')) {
  console.log(`Chrome v${userAgent.split('Chrome/')[1]}`)
} else if (userAgent.includes('Safari/')) {
  // Safari
}

輸出:

//Mozilla Firefox
Firefox v98.0

//Microsoft Edge 
Edg v98.0.1108.50

// Google Chrome
Chrome v98.0.4758.102 Safari/537.36

所有瀏覽器都顯示相同的輸出。這是因為一切都是建立在 Chromium 上的。

在 JavaScript 中為什麼應該避免瀏覽器版本檢測

使用 userAgent 檢測瀏覽器名稱及其版本並不是一個好主意,因為它不是 100% 準確的。

每個瀏覽器都以不同的方式設定這些資料,並且所有瀏覽器都不遵循特定的標準。

在 JavaScript 中檢測瀏覽器版本的另一個選項

瀏覽器中的特徵檢測-

檢測特定瀏覽器是否支援特定功能可能是一個更好的主意。並且根據它是否支援某個功能,你可以採取進一步的行動並相應地編寫你的程式碼。

逐步開發網站-

遵循設計技術,你首先為具有較少功能的小型裝置開發網站,然後在增加功能的同時向上移動。它被稱為自下而上的方法。

為現代瀏覽器構建 -

開發一個具有現代瀏覽器所有功能的成熟網站,然後調整一些更改以使其在舊瀏覽器上得到支援。與漸進式或自下而上的方法相比,它可能難以實施且效果較差。