我正在尝试从CKEditor 5处理插入事件.
editor.document.on("change", (eventInfo, type, data) => {
switch (type) {
case "insert":
console.log(type, data);
break;
}
});
Run Code Online (Sandbox Code Playgroud)
在编辑器中键入时,将调用回调.data事件回调中的参数看起来像这样:
{
range: {
start: {
root: { ... },
path: [0, 14]
},
end: {
root: { ... },
path: [0, 15]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到一种方便的方法来确定实际插入的文本.我可以调用data.range.root.getNodeByPath(data.range.start.path);哪个似乎得到了插入文本的文本节点.那么我们应该查看文本节点的data字段吗?我们是否应该假设路径中的最后一项始终是范围开始和结束的偏移量并使用它来进行子串?我认为插入事件也会因为插入非文本类型的东西而被触发(例如元素).我们怎么知道这确实是事件的文本类型?
有没有我想念的东西,或者只有不同的方式一起完成这一切?