我制作了一个带有一些清理逻辑的小内联编辑器。因此,如果您从 word 文件中粘贴,它会删除所有格式。
我的问题是,如果您选择例如一个句子并粘贴,它不会被替换。这与清理逻辑有关。现在我需要知道,如何使用 rangy 删除范围,以便在粘贴之前删除该范围。
我制作了一个带有一些清理逻辑的小内联编辑器。因此,如果您从 word 文件中粘贴,它会删除所有格式。
我的问题是,如果您选择例如一个句子并粘贴,它不会被替换。这与清理逻辑有关。现在我需要知道,如何使用 rangy 删除范围,以便在粘贴之前删除该范围。
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);
}
}