我有一個contenteditable DIV鏈接/同步回textarea。鞏固堆疊DOM格式化元素 - contenteditable DIV
contenteditable DIV是一個免費的所有沙箱,它將在被調用時創建格式化元素等。然而,這通常會導致凌亂的堆疊元素。
我希望能夠在之前清理代碼textarea表單被髮送到服務器。
有可能喜歡的東西就結了以下內容:
<div>
<b>
<i>
Hel
</i>
<i>
l
</i>
</b>
<i>
<b>
o World!
</b>
</i>
</div>
這將理想轉化爲:通過DIV我的的childNodes
<div>
<b>
<i>
Hello World!
</i>
</b>
</div>
如果我走了(遞歸)可能大概跟蹤的格式(tagName.toUpperCase() == {'B','I' ....})
//或做一個document.queryCommandState
期間,我可以在selectNode(thenode)
上做一個document.execCommand('removeFormat',false,null)
。
但是,我對如何跟蹤相鄰節點的格式有點遺憾。
作爲參考這裏是我最近做了DOM解析,除去從IMG標籤格式:http://jsfiddle.net/tjzGg/
注:這是一個類似的問題>jquery - consolidate stacked DOM elements但它是關於鞏固useCSS
風格行成一個主要的風格。這是一個不同的問題,原因是我期望用一種常見的風格來整合文本,但是由於文本的格式化,人爲地分割了多個元素。如果你一次只有一個可以理解的div,並且每個單獨的一個字符都是一個字符,那麼每個元素最後只會有一個字符。
NB:溶液2從@ TIM-按下碼在啓發:http://stackoverflow.com/questions/6240139/highlight-text-range-使用javascript感謝提姆! – 2013-04-26 21:01:29