mirror of
https://github.com/sendevia/website.git
synced 2026-03-08 08:44:15 +08:00
feat(screenWidth): add fallback check for initial screen width update
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user