javascript - 使用 rangey 删除选择

标签 javascript rangy

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

我的问题是,如果您选择例如一句话粘贴,不会被替换。这是由于清理逻辑。现在我需要知道如何删除范围,以便我可以在粘贴之前删除该范围。

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

最佳答案

您可以使用 deleteContents() 删除范围方法。

Rangy 还可以处理您尝试在 jsFiddle 中修复的许多跨浏览器问题。它提供了一个 createContextualFragment() 实现和一个带有 getRangeAt() 的选择对象。另外,您应该使用 keydown 事件的 ctrlKey 属性。这是更新后的 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);
    }
}

关于javascript - 使用 rangey 删除选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11206170/

相关文章:

javascript - 在 JavaScript 中获取调用类

javascript - 根据 DOM,“Range.detach”现在是空操作

javascript - 在 contenteditable 中删除选择范围内的所有 HTML 标签

javascript - 使用 Jquery 结束元素

c# - 检测在服务器端启用的 Javascript

javascript - 如何迭代数组中的特定键值对

javascript - 将代理添加到处理程序 - Hapi

javascript - 提交页面时从 iframe 访问隐藏元素

javascript - 在 ContentEditable Div 中使用 Rangey 保存/恢复选择

jquery - Rangy 和 ContentEditable - 设置插入符