我制作了一个带有一些清理逻辑的小型内联编辑器。因此,如果您从 Word 文件粘贴,它会删除所有格式。
我的问题是,如果您选择例如一句话粘贴,不会被替换。这是由于清理逻辑。现在我需要知道如何删除范围,以便我可以在粘贴之前删除该范围。
最佳答案
您可以使用 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/