get device type

This commit is contained in:
Spedon
2023-03-16 00:07:23 +08:00
parent 4d6f75d50f
commit 9b5b5a758a
2 changed files with 30 additions and 3 deletions

View File

@@ -1,11 +1,12 @@
import { imgIndexSpanUpdate } from './indexDisp'
import { trackMouseInit } from './trackMouse'
import { trackMouseInit } from './desktop'
import { thresholdCtlInit } from './thresholdCtl'
import { imagesArrayLen } from './dataFetch'
import { vwRefreshInit } from './overlay'
import { preloader } from './imageCache'
import { getDeviceType } from './utils'
function init(): void {
function desktopInit(): void {
preloader(0)
vwRefreshInit()
imgIndexSpanUpdate(0, imagesArrayLen)
@@ -13,4 +14,8 @@ function init(): void {
trackMouseInit()
}
init()
function mobileInit(): void {
console.log('mobile')
}
getDeviceType().mobile ? mobileInit() : desktopInit()

View File

@@ -17,6 +17,12 @@ export interface imgElement {
bgStyle: string
}
export interface deviceType {
mobile: boolean
tablet: boolean
desktop: boolean
}
// cache a xy position to array
export const styleCache = (
x: number,
@@ -129,3 +135,19 @@ export function preloadImage(src: string): void {
const cache = new Image()
cache.src = src
}
export const getDeviceType = (): deviceType => {
const ua: string = navigator.userAgent
const result: deviceType = { mobile: false, tablet: false, desktop: false }
if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
result.mobile = true
result.tablet = true
} else if (
/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(
ua
)
) {
result.mobile = true
} else result.desktop = true
return result
}