From 113cec1705622623c717683d1e83efa13648412d Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Sun, 10 Aug 2025 17:14:02 +0800 Subject: [PATCH] fix: correct SSR mobile detection --- frontend_nuxt/utils/screen.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend_nuxt/utils/screen.js b/frontend_nuxt/utils/screen.js index f74afd03e..455b0e257 100644 --- a/frontend_nuxt/utils/screen.js +++ b/frontend_nuxt/utils/screen.js @@ -1,5 +1,5 @@ import { ref, computed, onUnmounted } from 'vue' -import { useRequestHeaders } from 'nuxt/app' +import { useRequestHeaders, useRequestEvent } from 'nuxt/app' export const useIsMobile = () => { const width = ref(0) @@ -7,12 +7,15 @@ export const useIsMobile = () => { const isMobileUserAgent = () => { let userAgent = '' + let mobileHint = '' if (typeof navigator !== 'undefined') { userAgent = navigator.userAgent.toLowerCase() } else { - const headers = useRequestHeaders(['user-agent']) + const event = useRequestEvent() + const headers = event?.node?.req?.headers || useRequestHeaders() userAgent = (headers['user-agent'] || '').toLowerCase() + mobileHint = (headers['sec-ch-ua-mobile'] || '').toLowerCase() } const mobileKeywords = [ @@ -20,7 +23,7 @@ export const useIsMobile = () => { 'mobile', 'tablet', 'opera mini', 'iemobile' ] - return mobileKeywords.some(keyword => userAgent.includes(keyword)) + return mobileHint.includes('?1') || mobileKeywords.some(keyword => userAgent.includes(keyword)) } if (typeof window !== 'undefined') {