44 lines
918 B
JavaScript
44 lines
918 B
JavaScript
/**
|
|
* 移动端检测
|
|
*/
|
|
import { ref, onMounted, onUnmounted } from 'vue'
|
|
|
|
export function useMobile() {
|
|
const isMobile = ref(false)
|
|
const isTouch = ref(false)
|
|
|
|
const checkMobile = () => {
|
|
// 检测移动设备
|
|
const userAgent = navigator.userAgent.toLowerCase()
|
|
const mobileKeywords = [
|
|
'android', 'iphone', 'ipad', 'ipod', 'windows phone',
|
|
'mobile', 'mobi', 'tablet'
|
|
]
|
|
|
|
isMobile.value = mobileKeywords.some(keyword =>
|
|
userAgent.includes(keyword)
|
|
) || window.innerWidth < 768
|
|
|
|
// 检测触摸设备
|
|
isTouch.value = 'ontouchstart' in window || navigator.maxTouchPoints > 0
|
|
}
|
|
|
|
const handleResize = () => {
|
|
checkMobile()
|
|
}
|
|
|
|
onMounted(() => {
|
|
checkMobile()
|
|
window.addEventListener('resize', handleResize)
|
|
})
|
|
|
|
onUnmounted(() => {
|
|
window.removeEventListener('resize', handleResize)
|
|
})
|
|
|
|
return {
|
|
isMobile,
|
|
isTouch
|
|
}
|
|
}
|