我试图在跨越多个 div 的选定文本之前和之后放置文本。例如,如果文本是
<p>This is a random text<p>
<p>Another random text<p>
现在如果用户从两个 p 标签中选择“是一个随机文本另一个随机文本”。输出应该是
<p>This hello world is a random text hello world<p>
<p>hello world Another random text hello world<p>
我知道如何在所选文本之前和之后放置文本,但是如何在每个 p 结尾之前和另一个选定 p 标签的开始之后插入文本。
function surroundSelection(textBefore, textAfter) {
if (window.getSelection) {
var range = sel.getRangeAt(0);
var startNode = range.startContainer, startOffset = range.startOffset;
var boundaryRange = range.cloneRange();
var startTextNode = document.createTextNode(textBefore);
var endTextNode = document.createTextNode(textAfter);
boundaryRange.collapse(false);
boundaryRange.insertNode(endTextNode);
boundaryRange.setStart(startNode, startOffset);
boundaryRange.collapse(true);
boundaryRange.insertNode(startTextNode);
// Reselect the original text
range.setStartBefore(startTextNode);
range.setEndAfter(endTextNode);
sel.removeAllRanges();
sel.addRange(range);
}
}
这只是在所选文本之前和之后添加文本,而与标签无关。