【发布时间】:2019-11-23 01:26:06
【问题描述】:
这是我用元素包装所选文本的方法:
let selectObj = window.getSelection();
let wrapTag = document.createElement("a");
const range = selectObj.getRangeAt(0).cloneRange();
range.surroundContents(wrapTag);
selectObj.removeAllRanges();
selectObj.addRange(range);
但如果选择跨越文本节点边界,它将不起作用,所以我想我可以为每个跨越的节点做另一个换行,而不是像这样失败(选择的文本在 a 标签内):
<div>
Lorem
<b>ipsum
<a>dolor</b> sit</a>
amet
</div>
它会像这样创建两个包裹:
<div>
Lorem
<b>ipsum <a>dolor</a></b>
<a>sit</a>
amet
</div>
你知道我是怎么做到的吗?
【问题讨论】:
标签: javascript dom selection