function insertHtmlAtSelectionEnd(html, isBefore) {
var sel, range, node;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = window.getSelection().getRangeAt(0);
range.collapse(isBefore);
// Range.createContextualFragment() would be useful here but was
// until recently non-standard and not supported in all browsers
// (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ( (node = el.firstChild) ) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.collapse(isBefore);
range.pasteHTML(html);
}
}
3条答案
按热度按时间fxnxkyjh1#
这里有一个跨浏览器的功能来做到这一点,它在所有主要的浏览器和迎合IE做这件事的方式与其他浏览器相比有很大的不同。
示例:http://jsfiddle.net/timdown/UWExN/64/
6yt4nkrj2#
试试这个:
bvk5enib3#
您可以尝试以下代码来获得插入和替换为文本节点和
range.insertNode()
。文本插入器
文本替换
您可以检查小提琴:https://jsfiddle.net/gooner12/u25cbdyw/2/