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

前言

腾讯无界微前端框架内嵌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简单上手

相关推荐
caimouse7 小时前
ReactOS 图形系统分析(11):映射设备对象 — MDEVOBJ(多显示器)
系统架构·计算机外设
weixin_404679317 小时前
godot + vscode ai开发
ide·vscode·编辑器·游戏引擎·godot
我一定会有钱8 小时前
vscode system下载安装
ide·vscode·编辑器
2401_8582861121 小时前
VSCODE远程链接错误: 无法建立链接,过程试图写入的管道不存在的解决方法
ide·vscode·编辑器
一朵好运莲1 天前
Turbo Console Log插件VSCode更改log快捷键教程
ide·vscode·编辑器
叶小鸡1 天前
Trae + Apifox MCP:让 AI 自动协同前后端接口文档
ai·编辑器
笨#小孩1 天前
中间件解析漏洞与编辑器漏洞:Web安全绕过的“捷径”
web安全·中间件·编辑器
新点一讯2 天前
玩CS2推荐一个高配置电竞显示器?蚂蚁电竞ANT257PF硬核解析
计算机外设
AUV11072 天前
Mac 录屏自动缩放怎么设置才不乱跳:自动片段、固定区域与鼠标跟随调试
macos·计算机外设
coding4u3 天前
Mac 外接显示器完全指南:从插上线到调好每个参数
macos·计算机外设·文件管理·显示器·策略模式·quick look扩展