1
0
mirror of https://github.com/sendevia/website.git synced 2026-03-05 23:32:45 +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 fallbackHandler: (() => void) | null = null;
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();
resizeHandler = () => update();
window.addEventListener("resize", resizeHandler);
if (document.readyState === "complete") {
runFallbackCheck();
} else {
fallbackHandler = () => runFallbackCheck();
window.addEventListener("load", fallbackHandler);
}
isInitialized = true;
}
}
@@ -40,9 +56,15 @@ export const useScreenWidthStore = defineStore("screenWidth", () => {
* 清理监听器
*/
function cleanup() {
if (typeof window !== "undefined" && resizeHandler) {
window.removeEventListener("resize", resizeHandler);
resizeHandler = null;
if (typeof window !== "undefined") {
if (resizeHandler) {
window.removeEventListener("resize", resizeHandler);
resizeHandler = null;
}
if (fallbackHandler) {
window.removeEventListener("load", fallbackHandler);
fallbackHandler = null;
}
isInitialized = false;
}
}