From 9b5b5a758afb7e98f2cfc4b29db8b58bb4bfc868 Mon Sep 17 00:00:00 2001 From: Spedon Date: Thu, 16 Mar 2023 00:07:23 +0800 Subject: [PATCH] get device type --- assets/ts/main.ts | 11 ++++++++--- assets/ts/utils.ts | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/assets/ts/main.ts b/assets/ts/main.ts index 725f43a..b58ef0e 100644 --- a/assets/ts/main.ts +++ b/assets/ts/main.ts @@ -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() diff --git a/assets/ts/utils.ts b/assets/ts/utils.ts index befa564..1db016a 100644 --- a/assets/ts/utils.ts +++ b/assets/ts/utils.ts @@ -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 +}