方法源码
export function getOSAndBrowserInfo() {
const userAgent = navigator.userAgent
let osName = 'unknown'
let osVersion = 'unknown'
let browserName = 'unknown'
let browserVersion = 'unknown'
if (userAgent.indexOf('Mac OS X') !== -1) {
osName = 'macOS'
const regex = /Mac OS X (\d+[_.]\d+[_.]?\d*)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
osVersion = regex[1].replace(/_/g, '.')
}
} else if (userAgent.indexOf('Windows NT') !== -1) {
osName = 'Windows'
const regex = /Windows NT (\d+\.\d+)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
osVersion = regex[1]
}
}
if (/Edg\//.test(userAgent)) {
browserName = 'Microsoft Edge'
const regex = /Edg\/(\d+\.\d+)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
browserVersion = regex[1]
}
} else if (/Firefox\//.test(userAgent)) {
browserName = 'Firefox'
const regex = /Firefox\/(\d+\.\d+)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
browserVersion = regex[1]
}
} else if (/Chrome\//.test(userAgent)) {
browserName = 'Google Chrome'
const regex = /Chrome\/(\d+\.\d+)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
browserVersion = regex[1]
}
} else if (/Safari\//.test(userAgent)) {
browserName = 'Safari'
const regex = /Version\/(\d+\.\d+)/.exec(userAgent)
if (regex !== null && regex.length > 1) {
browserVersion = regex[1]
}
}
return {
osName,
osVersion,
browserName,
browserVersion
}
}
使用示例
const uaAndOs = getOSAndBrowserInfo()
console.log(uaAndOs.osName + uaAndOs.osVersion)
console.log(uaAndOs.browserName + uaAndOs.browserVersion)