73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
// 处理 ResizeObserver 错误
|
|
const resizeHandler = () => {
|
|
const resizeObserverErrors = [
|
|
"ResizeObserver loop completed with undelivered notifications.",
|
|
"ResizeObserver loop limit exceeded",
|
|
"ResizeObserver loop completed"
|
|
]
|
|
|
|
// 添加全局错误处理
|
|
const handler = (event) => {
|
|
if (event && event.message && resizeObserverErrors.includes(event.message)) {
|
|
event.stopPropagation()
|
|
event.preventDefault()
|
|
event.stopImmediatePropagation()
|
|
return false
|
|
}
|
|
}
|
|
|
|
// 添加多个事件监听器
|
|
window.addEventListener('error', handler, true)
|
|
window.addEventListener('unhandledrejection', handler, true)
|
|
|
|
// 添加 ResizeObserver 错误处理
|
|
if (window.ResizeObserver) {
|
|
const resizeObserverPrototype = ResizeObserver.prototype
|
|
const originalObserve = resizeObserverPrototype.observe
|
|
|
|
resizeObserverPrototype.observe = function (...args) {
|
|
try {
|
|
return originalObserve.apply(this, args)
|
|
} catch (e) {
|
|
if (resizeObserverErrors.includes(e.message)) {
|
|
return null
|
|
}
|
|
throw e
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export default {
|
|
install: (app) => {
|
|
resizeHandler()
|
|
|
|
// 添加全局错误处理器
|
|
app.config.errorHandler = (err, vm, info) => {
|
|
const resizeObserverErrors = [
|
|
"ResizeObserver loop completed with undelivered notifications.",
|
|
"ResizeObserver loop limit exceeded",
|
|
"ResizeObserver loop completed"
|
|
]
|
|
|
|
if (err && err.message && resizeObserverErrors.includes(err.message)) {
|
|
return
|
|
}
|
|
console.error('Vue Error:', err, info)
|
|
}
|
|
|
|
// 添加全局警告处理器
|
|
app.config.warnHandler = (msg, vm, trace) => {
|
|
const resizeObserverErrors = [
|
|
"ResizeObserver loop completed with undelivered notifications.",
|
|
"ResizeObserver loop limit exceeded",
|
|
"ResizeObserver loop completed"
|
|
]
|
|
|
|
if (resizeObserverErrors.includes(msg)) {
|
|
return
|
|
}
|
|
console.warn('Vue Warning:', msg, trace)
|
|
}
|
|
}
|
|
}
|