监听 CKEditor 5 中内容更改时触发的事件

2023-12-21

我怎样才能监听“输入”事件ckeditor5?我希望能够使用Observables像这样:

Observable.fromEvent(this.editor, "input").debounceTime(250).subscribe(() => {});

到目前为止,我已经能够听到这样的一些事件:

Observable.fromEvent(this.editor.editing.view, 'selectionChangeDone').subscribe(() => { });

但我没有找到编辑器中数据更改后立即触发的事件的名称。我尝试了“更改”,但它仅在编辑器获得或失去焦点时才会触发。


自 CKEditor5 v11.0.0 起(自 2018 年 7 月 21 日起)

你什么probably需要的是Document#change:data https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_document-Document.html#event-change:data由编辑器的文档触发的事件。

editor.model.document.on( 'change:data', () => {
    console.log( 'The data has changed!' );
} );

当文档以编辑器数据中“可见”的方式发生更改时,会触发此事件。还有一组更改,例如选择位置更改、标记更改,这些更改不会影响结果editor.getData()。要聆听所有这些变化,您可以使用更广泛的Document#change https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_document-Document.html#event-change event:

editor.model.document.on( 'change', () => {
    console.log( 'The Document has changed!' );
} );

CKEditor5 v11.0.0 之前的版本

你什么probably需要是一个change https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_document-Document.html#event-change由编辑器的文档触发的事件。

editor.model.document.on( 'change', () => {
    console.log( 'The Document has changed!' );
} );

正如该事件的文档所述:

每次之后都被解雇enqueueChange() block https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_model-Model.html#function-enqueueChange或最外层change() block https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_model-Model.html#function-change被执行并且文档在该块的执行期间被更改。

本次活动将涵盖的变化包括:

  • 文档结构变化,
  • 选择变化,
  • 标记发生变化。

如果您想收到有关所有这些更改的通知,只需像这样监听此事件:

  model.document.on( 'change', () => {
      console.log( 'The Document has changed!' );
  } );

但是,如果您只想收到有关结构更改的通知,请检查是否differ https://docs.ckeditor.com/ckeditor5/latest/api/module_engine_model_differ-Differ.html包含任何更改:

  model.document.on( 'change', () => {
      if ( model.document.differ.getChanges().length > 0 ) {
          console.log( 'The Document has changed!' );
      }
  } );

最后一个代码片段在实现自动保存等功能时非常有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

监听 CKEditor 5 中内容更改时触发的事件 的相关文章

  • ReactJS - Redux Form - 如何根据单选字段元素有条件地显示/隐藏元素?

    我对 Redux 比较陌生 我有一个表单 其中有一些无线电输入 是 或 否 基本上 我想根据该无线电输入选择有条件地显示包含另一个 redux 表单字段的另一个元素 有直接的方法可以做到这一点吗 我想检查一下formProps site v
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 如何正确更新反应钩子状态内的数组

    我一直在尝试更新代表反应状态的数组内的对象 当输入的值更改时应该更新该对象 我可以自己找到一种方法来更新它 但我不太确定这是正确的方法 因为当我打开反应开发工具并转到组件选项卡并单击我正在处理的组件时 在输入输入时状态不会立即更新 并且为了
  • React - 检查元素在 DOM 中是否可见

    我正在构建一个表单 用户需要回答一系列问题 单选按钮 然后才能进入下一个屏幕 对于字段验证 我使用 yup npm 包 和 redux 作为状态管理 对于一种特定场景 组合 会显示一个新屏幕 div 要求用户进行确认 复选框 然后用户才能继
  • 仅显示某些路由的组件 - React

    我正在 React 中开发一个带有登录界面的网站 该网站显示一个自定义导航组件 但是我不希望它显示在主路线 即登录页面 上 但据我了解 静态组件不会在路线更改时重新呈现 这准确吗 我正在使用 React Router 来处理所有路由 这是我
  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • 如何将React版本17降级到16?

    由于 React 17 不支持许多 React 包 如何将 React 版本从 17 降级到 16 假设您使用 npm yarn 或其他节点包管理器 依赖项版本列在package json 搜索react and react dom包下de
  • 如何获取使用 .map 渲染的第一个元素的 ref?

    我需要在几行中显示视频 卡片 的缩略图 并重点关注第一个缩略图 我使用嵌套地图进行了显示 该代码基本上迭代视频数组并返回多行视频 我们如何关注第一个渲染的元素 我认为我们需要获得第一个要聚焦的元素的引用 但是我们如何在这里设置 ref 并在
  • 获取 CKEditor 内容? - jQuery

    我的 CKEditor 代码是 window onload function var editor CKEDITOR replace big info CKEDITOR config height 330px CKEDITOR config
  • 如何在react-router-dom@v6中使用私有路由

    我想要将私有路由与react router dom v6一起使用 当我尝试应用身份验证条件时 在 App js 中
  • 内容丰富的 api markdown 转换为 HTML

    有没有什么简单的方法可以将 Markdown 文本从 Contentful api 转换为 html 代码以显示在 html 页面上 我尝试过使用 pagedown 和一些类似的技术 但似乎没有一个对我有用 我是 Contentful 的客
  • 如果在状态中接收到相同的值,React 是否会重新渲染组件

    I am trying to check if I set the same value to state as it has previously does it re render the component or if it foun
  • 如何使用 setState 插入 React 的状态数组?

    我正在寻找在反应中修改和数组并在特定索引上插入元素 这就是我的状态 this state arr 我想做的是编译这个arr index random element 反应 js setState 语法 我试图做的是 this setStat
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • 如何为 React 组件参数创建文字类型?

    我创建了 SelectProps 界面 export interface SelectProps value string options string onChange value any gt void 我创建了反应组件
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • 深层嵌套 Flexbox 布局是否会导致性能问题?

    我一直在开发一个 ReactJS 项目 其中我使用 Flexbox 布局创建了大部分组件 由于使用 React 我们可以拥有深度嵌套的组件 因此我的布局具有嵌套的 Flexbox 布局 现在我的问题是 这对性能有任何问题吗 在一个页面上 有

随机推荐

  • 构造函数中“this”关键字的作用是什么?

    我刚才正在查看 MSDN 的示例代码 发现 namespace IListSourceCS public class Employee BusinessObjectBase private string id private string
  • 等待所有线程完成java中的工作

    我正在编写一个具有 5 个线程的应用程序 这些线程同时从 Web 获取一些信息并填充缓冲区类中的 5 个不同字段 当所有线程完成其工作时 我需要验证缓冲区数据并将其存储在数据库中 我该如何做到这一点 当所有线程完成工作时收到警报 我采取的方
  • 如何从分隔类型文件中的特定行打印特定字段

    我有一个排序的分隔类型文件 我想提取特定行中的特定字段 这是我的输入文件 somefile csv efevfe 132143 27092011080210 howdy hoodie adfasdfs 14321 2709201108184
  • Bootstrap:CSS - 列表组项目的高度

    请考虑关注 JSFiddle http jsfiddle net 7W2r4 12 http jsfiddle net 7W2r4 12 您可能会注意到 list group item已经完全崩溃了 而且我似乎无法让它自动调整 例如 hei
  • 更改 Visual Studio 中文档之间移动的 Ctrl + Tab 行为

    Is it possible to change how Ctrl Tab and Shift Ctrl Tab work in Visual Studio I have disabled the popup navigator windo
  • java.lang.ClassCastException:android.widget.TextView。为什么我会得到这个?

    由于某种原因 我收到 ClassCastException 错误 我真的不知道为什么 预先感谢 我是一名新程序员 任何帮助都会真正有帮助 没有双关语 Code final EditText answerBox EditText findVi
  • 使用 Pandas 数据框运行 OLS 回归

    我有一个pandas数据框 我希望能够根据 B 列和 C 列中的值预测 A 列的值 这是一个玩具示例 import pandas as pd df pd DataFrame A 10 20 30 40 50 B 20 30 10 40 50
  • Linq to SQL DataContext 生命周期管理问题

    我读过里克 斯特拉尔的article http www west wind com weblog posts 246222 aspx关于处理数据上下文的方法 我的 DBML 位于类库内 我通过在库内的单独自定义部分类中创建静态 Curren
  • iOS模拟器:双击home键有时不起作用

    使用 iOS 模拟器版本 10 双击主页按钮调出多任务处理 运行应用程序 有时没有响应 有时甚至点击 cmd shift h x2 来模拟主页按钮双击也有效 我已经和同事核实了这一点 他们也有同样的问题 我不确定这是否是模拟器中的错误 或者
  • 如何在 ODBC 查询中参数化表名

    我有一个到数据库的 ODBC 连接 我希望用户能够查看任何表中的数据 由于这是一个 ASP net 应用程序 我不能相信发送的表名不包含令人讨厌的内容 我尝试过使用参数化查询 但总是收到错误消息 必须声明表变量 这似乎是一个问题 因为它是表
  • 无法将 LINQ 绑定到 gridview

    我只是使用一个带有 group by 子句的简单 LINQ 查询 并尝试将其结果集绑定到 GridView 我的 LINQ 查询看起来像 var expData from c in WebDB TransTable group c by c
  • `reveal_type` 输出中的星号是什么意思?

    reveal type 1 Revealed type is builtins int bla 1 2 3 reveal type bla 0 Revealed type is builtins int reveal type bla 0
  • PHP 论坛软件的 RESTful 接口

    我希望将轻量级论坛功能集成到现有的 GWT 网站中 前端用GWT SmartGWT编写 后端用PHP编写 通信是通过使用 JSON 的 RESTful API 进行的 我查看了一些流行软件 SMF phpBB 等 的论坛 但无法找到任何对
  • 如何在 CouchDB 中公开用户创建,但读取访问权限为私有?

    我想公开用户创建 以便未经身份验证的用户可以在中创建新帐户 users 但只授予读取权限admin角色 这可能吗 如何 CouchDB 1 1 0 和即将推出的 1 1 1 不支持此功能 您能做的最好的事情就是拥有一个公共数据库 用户可以在
  • 切换内部HTML

    我见过各种接近我正在寻找的例子 但似乎没有一个例子能够准确地描述我想要的东西 我是 jQuery 的初学者 所以欢迎解释 我正在寻找这个来切换innerHTML from to 有人知道一种有效的方法吗 jQuery JavaScript
  • 在静默模式下运行 Kdiff3 命令

    有谁知道如何在静默模式下使用 kdiff3 命令执行本地文件的三向自动合并 无论合并结果如何 都不会显示 kdiff3 GUI 我希望看到 kdiff3 的行为如下 如果自动合并成功 Kdiff3 返回 0 代码 如果需要手动解决冲突 Kd
  • 带变量的Python Flask url_for(静态)[重复]

    这个问题在这里已经有答案了 我在用着Flask http flask pocoo org 使用 Python 并想要插入图像 使用以下命令可以正常工作 url for static filename path to img jpg 但现在我
  • 如何使用 Microsoft Graph API 检索其他用户的 MS Teams 聊天记录?

    作为全局管理员 我正在尝试检索不同用户的 MS Teams 聊天列表 但是无论我传递给哪个 IDGET beta users id chats响应始终是经过身份验证的用户的聊天列表 如何获取不同用户的聊天列表 API 文档 建议我应该能够打
  • 如何从 Fragment 或 Activity 调用挂起函数?

    我想请求许可并通过非阻塞函数来完成 因为我需要 Context 所以我无法从 ViewModel 调用它 如何为片段提供默认的 UI 范围并调用挂起函数 如下所示 class MapsFragment Fragment override f
  • 监听 CKEditor 5 中内容更改时触发的事件

    我怎样才能监听 输入 事件ckeditor5 我希望能够使用Observables像这样 Observable fromEvent this editor input debounceTime 250 subscribe gt 到目前为止