无界内嵌编辑器键盘事件失效

前言

腾讯无界微前端框架内嵌UniverJS Excel编辑器,两者都有自己的键盘点击事件处理方式,因为是内嵌缘故,导致无界拦截了事件,键盘按键失效,可以单元格追加文本 不可以使用 回车,方向键,删除等操作。

问AI,一直在监听事件处理兜圈子,实际上并没用

txt 复制代码
分析代码结构和无界环境问题
查看现有的 fixWujieKeyboard 函数实现
改进键盘事件修复方案,支持所有按键(回车、空格、删除等)
测试验证修复效果

原因

无界拦截了监听事件
无界官网

解决

安装无界插件wujie-polyfill插件,解决边界兼容性问题

尽管无界框架本身已经处理了大多数隔离和通信问题,但在某些特殊场景下,由于浏览器差异或第三方库的特定实现,可能会遇到一些边界兼容性问题。为此,无界官方提供了 wujie-polyfill 补丁包,专门用于解决这些棘手的问题。

什么情况下需要安装 wujie-polyfill?

  1. 富文本编辑器(如 tinymce)出现光标/选中问题 - 问题现象:在无界框架下使用富文本编辑器(如 tinymce),可能会遇到双击选中文本异常、粘贴复制后光标位置丢失等问题。 - 解决方案:引入 wujie-polyfill 的 SelectionPlugin 插件,该插件会在操作前后手动记录和恢复光标位置,确保编辑体验正常。

  2. Firefox 浏览器 + Ant Design (v4) 出现报错或遮挡 - 问题现象: - instanceof 检测失败:在 Firefox 浏览器下,使用 Ant Design 4 的 Select、Popover 等组件时,控制台可能报错(如 htmlelement is null)。 - 弹窗被遮挡:Popover、Tooltip 等弹出层位置计算错误,被主应用的导航栏或父级容器遮挡。 - 解决方案: - 对于报错问题,引入 InstanceofPlugin 插件。 - 对于遮挡问题,除了尝试使用 Ant Design 的 getPopupContainer 属性外,有时需要一个自定义插件来修正 getRootNode 的指向(专门针对 Firefox 的补丁)。

  3. 代码编辑器(如 Codemirror5)频繁触发 blur 事件 - 问题现象:使用 CodeMirror 5 版本时,在无界内可能会一直触发 blur(失焦)事件,导致编辑体验异常。 - 解决方案:官方建议升级到 CodeMirror 6。虽然没有直接提到用 polyfill 解决,但这属于已知的兼容性问题,值得留意。

如何使用 wujie-polyfill?

当你确认遇到上述问题时,可以按以下步骤引入 wujie-polyfill。

  1. 安装 npm i wujie-polyfill -S 或 yarn add wujie-polyfill

  2. 在主应用中配置 plugins

在加载子应用的 或 组件中,通过 plugins 属性引入补丁插件。示例:同时解决 Firefox 的报错和遮挡问题

js 复制代码
import { InstanceofPlugin } from "wujie-polyfill";

// 在你的子应用组件配置中
<WujieReact
  name="your-app"
  url="your-url"
  plugins={[
    // 1. 解决 Firefox 下 Antd 组件报错 (instanceof 检测失败)
    InstanceofPlugin(),
    // 2. 解决 Firefox 下弹窗被遮挡 (自定义插件修正 getRootNode)
    {
      patchElementHook(element, iframeWindow) {
        try {
          Object.defineProperties(element, {
            getRootNode: {
              configurable: true,
              get: () => iframeWindow.Node.prototype.getRootNode,
            },
          });
        } catch (error) {
          console.warn(error);
        }
      },
    },
  ]}
/>

参考文章:微前端:无界wujie简单上手

相关推荐
VidDown14 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
VidDown14 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
夜猫逐梦14 天前
【UE基础】03.蓝图与编辑器工作流
编辑器·ue·蓝图·ue编辑器
集芯微电科技有限公司14 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
VidDown14 天前
视频帧率技术详解:从 24fps 到 120fps,帧率如何影响你的观看体验?
网络·网络协议·编辑器·音视频·视频编解码·视频
爱就是恒久忍耐14 天前
VSCode里如何比较2个branch
ide·vscode·编辑器
bloglin9999914 天前
vscode中可视化的合并分支,在“合并编辑器中解析”中“与基线进行比较”是什么意思
ide·vscode·编辑器
lichong95114 天前
让AI自己用电脑!Cua:后台操作鼠标键盘,Mac/Windows/Linux全支持
人工智能·macos·ai·计算机外设·agent·提示词
zyplayer-doc15 天前
企业知识库安全与权限管理完全指南:从加密到审计的六层防护
人工智能·安全·pdf·编辑器·创业创新
古德new15 天前
鸿蒙PC迁移:Photoflare Qt 图片编辑器鸿蒙PC适配全记录
qt·编辑器·harmonyos