0

我制作了一个带有一些清理逻辑的小内联编辑器。因此,如果您从 word 文件中粘贴,它会删除所有格式。

我的问题是,如果您选择例如一个句子并粘贴,它不会被替换。这与清理逻辑有关。现在我需要知道,如何使用 rangy 删除范围,以便在粘贴之前删除该范围。

http://jsfiddle.net/eJNKy/3/

4

1 回答 1

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);
    }
}
于 2012-06-26T13:30:35.130 回答