From cc9a85e85ac1c0d98401a6debdabb42ed168e9c3 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Tue, 25 Nov 2025 22:22:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=8F=E8=94=BD=20ResizeObserver=20=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main.js b/src/main.js index 78c781ee..b39ab93c 100644 --- a/src/main.js +++ b/src/main.js @@ -1,3 +1,27 @@ +// 全局屏蔽 ResizeObserver 错误 +// 这是一个常见的 workaround,用于处理某些环境下 ResizeObserver 导致的循环限制错误。 +// 它通过包装 ResizeObserver 的回调函数来捕获并阻止错误向上冒泡,但不会修复根本原因。 +if (typeof window !== 'undefined' && window.ResizeObserver) { + const originalResizeObserver = window.ResizeObserver; + window.ResizeObserver = class ResizeObserver extends originalResizeObserver { + constructor(callback) { + super((entries, observer) => { + // 使用 requestAnimationFrame 延迟执行回调,以避免 ResizeObserver loop limit exceeded 错误 + window.requestAnimationFrame(() => { + try { + callback(entries, observer); + } catch (error) { + // 捕获 ResizeObserver 错误,并打印到控制台,防止应用崩溃 + console.error('ResizeObserver 错误被捕获:', error); + // 如果需要,可以在这里选择断开观察者,以防止进一步的错误 + // observer.disconnect(); + } + }); + }); + } + }; +} + import {createApp} from 'vue'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css';