Javascript Contenteditable:删除标记节点内文本的格式

Javascript Contenteditable:删除标记节点内文本的格式,javascript,contenteditable,Javascript,Contenteditable,我正在contenteditable div中开发一个基本的html编辑器(代码基于范围向导提供的各种解决方案) 它正在工作(它可以插入html节点来替换用户的选择),但是缺少一个主要功能,如果用户在标记中选择一个字母(例如strong),他应该能够删除该字母的格式,所以 <strong>lorem ipsum</strong> lorem ipsum 用户选择ipsum的“i”: <strong>lorem |i|psum</strong>

我正在contenteditable div中开发一个基本的html编辑器(代码基于范围向导提供的各种解决方案)

它正在工作(它可以插入html节点来替换用户的选择),但是缺少一个主要功能,如果用户在标记中选择一个字母(例如strong),他应该能够删除该字母的格式,所以

<strong>lorem ipsum</strong>
lorem ipsum
用户选择ipsum的“i”:

<strong>lorem |i|psum</strong>
lorem|i|psum
当用户按下“添加/删除强标签”按钮时,结果应为:

<strong>lorem </strong>i<strong>psum</strong>
loremipsum
对于当前代码,这就是结果(对于标记!=strong来说这很好):

loremipsum
我需要一个片段,当用户选择一些文本并按下按钮插入/删除标记并遵循以下指令时,该片段将被激活:

  • 查找父标记(如果存在)
  • 如果(新标记==父标记)将父标记拆分为2个标记
  • 在2个标记之间插入(未格式化)选项
这是一个虽然,我知道。。。
提前谢谢

直接使用DOM方法和属性并不难
splitText()
parentNode
tagName
insertBefore()
。尽管如果选择边界位于不同的节点中,这是一个更困难的问题。
<strong>lorem <strong>i</strong>psum</strong>