| 123456789101112131415161718192021222324252627 |
- // 设备适配工具:支持移动端展示
- 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 }))
- }
|