
前言使用univer在线文档编辑器正常全屏打开功能正常内嵌到弹窗打开数据可正常加载但是不可以删除和右键键盘事件捕获不到原因弹窗打开时浏览器窗口本身可能没有获得系统级焦点或者 Element Plus 弹窗的焦点锁定机制把焦点“困”在了一个不可编辑的区域导致编辑器虽然显示正常但键盘事件根本传不到 Canvas 里。解决缺少一个openedonDialogOpened捕获焦点事件!-- 在线文件弹窗 --el-dialogclassdialogv-modeliframeDialogVisibletitle在线文件:style{ width: 95%, height: 95% }destroy-on-closeopenedonDialogOpenedclosehandleDialogClosedivstylemax-height:70vh;overflow-y:auto;OnlineFilerefonlineFileRefv-ififrameDialogVisible:paramIdcurrentSheetId:paramTypesheet:openTypepopupsave-rolo-paramshandleSaveRoloParams//div/el-dialog// 弹窗打开后的回调处理编辑器聚焦onDialogOpened(){setTimeout((){// 第一步让浏览器窗口获得系统级焦点window.focus()// 第二步强制让 document.body 失焦再聚焦重置焦点状态document.body.focus()document.body.blur()// 第三步聚焦编辑器setTimeout((){constcanvasdocument.querySelector(canvas)if(canvas){canvas.focus()canvas.click()// 派发一个无害的键盘事件激活编辑器constkeyEventnewKeyboardEvent(keydown,{key:Shift,code:ShiftLeft,keyCode:16,bubbles:true,composed:true})canvas.dispatchEvent(keyEvent)}},150)},300)},