我用一些清理逻辑制作了一个内联编辑器。因此,如果您从word文件粘贴,它将删除所有格式。
我的问题是,如果您选择例如一句话和粘贴,它不会被取代。这是cleanUp逻辑的二重奏。现在我需要知道,如何删除rangy范围,所以我可以在粘贴之前删除这个范围。
答案 0 :(得分:4)
您可以使用deleteContents()
方法删除范围。
Rangy还处理了许多您尝试在jsFiddle中修复的跨浏览器问题。它提供createContextualFragment()
实现和getRangeAt()
选择对象。此外,您应该使用ctrlKey
事件的keydown
属性。这是一个更新的jsFiddle:
http://jsfiddle.net/timdown/eJNKy/6/
关键功能是
function paste(html) {
var sel = rangy.getSelection();
if (html && sel.rangeCount > 0) {
var range = sel.getRangeAt(0);
range.deleteContents();
var frag = range.createContextualFragment(html);
var lastChild = frag.lastChild;
range.insertNode(frag);
range.collapseAfter(lastChild);
sel.setSingleRange(range);
}
}