// 设备适配工具:支持移动端展示 const MOBILE_BREAKPOINT = 768 /** 根据视口宽度判断是否移动端 */ export function isMobileDevice() { if (typeof window === 'undefined') return false return window.innerWidth <= MOBILE_BREAKPOINT } /** * 当前展示端(pc / mobile)——只由真实视口宽度决定。 * 说明:不读取 localStorage,避免"以前点过手机端被记住、之后在 PC 上一直被当作移动端"的坑。 * 右上角手动切换为"本次会话内预览",刷新/重进后恢复按窗口宽度自动判断。 */ // 本会话内的手动覆盖(内存态,刷新即失效) let manualMode = null export function getDeviceMode() { if (manualMode === 'pc' || manualMode === 'mobile') return manualMode return isMobileDevice() ? 'mobile' : 'pc' } export function setDeviceMode(mode) { manualMode = mode // 通知各子应用端切换 window.dispatchEvent(new CustomEvent('mf-device-change', { detail: mode })) }