用rangy删除选择

时间:2012-06-26 11:17:19

标签: javascript rangy

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

我的问题是,如果您选择例如一句话和粘贴,它不会被取代。这是cleanUp逻辑的二重奏。现在我需要知道,如何删除rangy范围,所以我可以在粘贴之前删除这个范围。

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

1 个答案:

答案 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);
    }
}