我有两个带有格式化内容的 contenteditable div(例如,其中的段落带有粗体/斜体文本等),我想将选定的文本从一个移动到另一个。它本身运行良好,但我想在删除移动的文本时“清理”它,例如删除任何格式(“<b>hello</b>”将变为“hello”)。所以我决定像这样使用 HTML5 drop 事件:
dropHandler = function(e) {
text = e.dataTransfer.getData('text');
if (document.caretRangeFromPoint)
{
range = document.caretRangeFromPoint(e.clientX, e.clientY);
}
else if (document.createRange && oe.rangeParent)
{
range = document.createRange();
range.setStart(oe.rangeParent, oe.rangeOffset);
}
range.insertNode(document.createTextNode(text));
return false;
};
它可以工作并将“已清理”(纯)文本放置在正确的位置,但不会删除源内容可编辑 div 中最初选择的文本 - 因为默认行为被“return false”阻止 - 所以所需的文本移动变为文本副本。如何在预处理拖放文本的同时实现默认文本移动行为?