1
0
mirror of https://github.com/sendevia/website.git synced 2026-03-08 00:32:34 +08:00

feat(screenWidth): add fallback check for initial screen width update

This commit is contained in:
2025-12-06 00:38:06 +08:00
parent 3dbe4846bb
commit dcde015ded

View File

@@ -12,6 +12,7 @@ export const useScreenWidthStore = defineStore("screenWidth", () => {
// 内部状态 // 内部状态
let resizeHandler: (() => void) | null = null; let resizeHandler: (() => void) | null = null;
let fallbackHandler: (() => void) | null = null;
let isInitialized = false; let isInitialized = false;
/** /**
@@ -24,6 +25,13 @@ export const useScreenWidthStore = defineStore("screenWidth", () => {
} }
} }
/**
* Fallback 检查
*/
function runFallbackCheck() {
update();
}
/** /**
* 初始化监听器 * 初始化监听器
*/ */
@@ -32,6 +40,14 @@ export const useScreenWidthStore = defineStore("screenWidth", () => {
update(); update();
resizeHandler = () => update(); resizeHandler = () => update();
window.addEventListener("resize", resizeHandler); window.addEventListener("resize", resizeHandler);
if (document.readyState === "complete") {
runFallbackCheck();
} else {
fallbackHandler = () => runFallbackCheck();
window.addEventListener("load", fallbackHandler);
}
isInitialized = true; isInitialized = true;
} }
} }
@@ -40,9 +56,15 @@ export const useScreenWidthStore = defineStore("screenWidth", () => {
* 清理监听器 * 清理监听器
*/ */
function cleanup() { function cleanup() {
if (typeof window !== "undefined" && resizeHandler) { if (typeof window !== "undefined") {
window.removeEventListener("resize", resizeHandler); if (resizeHandler) {
resizeHandler = null; window.removeEventListener("resize", resizeHandler);
resizeHandler = null;
}
if (fallbackHandler) {
window.removeEventListener("load", fallbackHandler);
fallbackHandler = null;
}
isInitialized = false; isInitialized = false;
} }
} }