我有一个内容可编辑的 DIV,它链接/同步回文本区域。
contenteditable DIV 是一个免费的沙箱,它将在调用它们时创建格式化元素等。然而,这确实经常导致混乱的堆叠元素。
我希望能够在将 textarea 表单发送到服务器之前清理代码。
最终可能会出现以下情况:
<div>
<b>
<i>
Hel
</i>
<i>
l
</i>
</b>
<i>
<b>
o World!
</b>
</i>
</div>
理想情况下将转换为:
<div>
<b>
<i>
Hello World!
</i>
</b>
</div>
如果我(递归地)遍历 div 的子节点,我大概可以跟踪格式(tagName.toUpperCase() == {'B','I' ....} )
// 或执行 a document.queryCommandState
,在此期间我可以document.execCommand('removeFormat',false,null)
在selectNode(thenode)
.
但是,我对如何跨格式的相邻节点进行跟踪有点迷茫。
作为参考,这是我最近为 DOM 解析所做的以从 IMG 标签中删除格式:http: //jsfiddle.net/tjzGg/
注意:这是一个类似的问题> jquery - 合并堆叠的 DOM 元素,但它是关于将useCSS
样式线合并为一种主要样式。这是一个不同的问题的原因是,我希望将文本与一种通用样式合并,但由于文本的格式设置,人为地将其拆分为多个元素。如果您采用一个可内容编辑的 div 并一次单独加粗一个字符,您最终将得到每个元素一个字符。