fix: xterminal error

This commit is contained in:
engigu
2026-01-14 15:14:21 +08:00
parent 93591db51c
commit f14102ef45
+17 -3
View File
@@ -60,7 +60,16 @@ function initTerminal(forceConnect = false) {
fitAddon = new FitAddon() fitAddon = new FitAddon()
terminal.loadAddon(fitAddon) terminal.loadAddon(fitAddon)
terminal.open(terminalRef.value) terminal.open(terminalRef.value)
fitAddon.fit()
// 延迟调用 fit,确保 DOM 已渲染
setTimeout(() => {
try {
fitAddon?.fit()
} catch (e) {
console.warn('Terminal fit failed:', e)
}
}, 50)
terminal.focus() terminal.focus()
// autoConnect 或者强制连接时才连接 // autoConnect 或者强制连接时才连接
@@ -195,7 +204,11 @@ function dispose() {
} }
function handleResize() { function handleResize() {
fitAddon?.fit() try {
fitAddon?.fit()
} catch (e) {
console.warn('Terminal resize failed:', e)
}
} }
// 暴露方法给父组件 // 暴露方法给父组件
@@ -207,7 +220,8 @@ defineExpose({
onMounted(() => { onMounted(() => {
window.addEventListener('resize', handleResize) window.addEventListener('resize', handleResize)
setTimeout(initTerminal, 100) // 延迟初始化,确保 DOM 完全渲染
setTimeout(initTerminal, 150)
}) })
onUnmounted(() => { onUnmounted(() => {