43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { ref } from 'vue'
|
|
|
|
export default () => {
|
|
const os = ref('Unknown')
|
|
const isMobile = ref(false)
|
|
const isAndroid = ref(false)
|
|
const isIOS = ref(false)
|
|
const isMacOS = ref(false)
|
|
const isWindows = ref(false)
|
|
const isLinux = ref(false)
|
|
|
|
if (typeof navigator !== 'undefined') {
|
|
const userAgent = navigator.userAgent.toLowerCase()
|
|
const platform = navigator.platform.toLowerCase()
|
|
|
|
const detectedAndroid = /android/.test(userAgent)
|
|
const detectedIOS = /iphone|ipad|ipod/.test(userAgent)
|
|
const detectedMacOS = /mac/.test(platform) && !detectedIOS
|
|
const detectedWindows = /win/.test(platform)
|
|
const detectedLinux = /linux/.test(platform) && !detectedAndroid
|
|
|
|
os.value = detectedAndroid
|
|
? 'Android'
|
|
: detectedIOS
|
|
? 'iOS'
|
|
: detectedMacOS
|
|
? 'macOS'
|
|
: detectedWindows
|
|
? 'Windows'
|
|
: detectedLinux
|
|
? 'Linux'
|
|
: 'Unknown'
|
|
isMobile.value = detectedAndroid || detectedIOS
|
|
isAndroid.value = detectedAndroid
|
|
isIOS.value = detectedIOS
|
|
isMacOS.value = detectedMacOS
|
|
isWindows.value = detectedWindows
|
|
isLinux.value = detectedLinux
|
|
}
|
|
|
|
return { os, isMobile, isAndroid, isIOS, isMacOS, isWindows, isLinux }
|
|
}
|