尽管没有错误,而且Edge和IE11都支持range.setStartBefore和range.setEndAfter,但什么也不会发生。我已经检查了每个属性,一切看起来都很正常,但是突出显示/选择整个范围并没有发生。
这在Chrome、Firefox和Opera中都能正常工作。
要进行交互,请在lorem ipsum文本中间选择几个字符或单词。Chrome、Firefox和Opera将按照预期选择lorem ipsum文本的其余部分。Edge和IE11什么也不做。
演示:https://codepen.io/anon/pen/OEVzoe
document.querySelector('div').addEventListener('mouseup', function() {
var range = window.getSelection().getRangeAt(0);
range.setStartBefore(range.startContainer.parentNode);
range.setEndAfter(range.endContainer.parentNode);
});
<div contenteditable="true">
<p>Hi</p>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum aspernatur veniam ut accusamus, ratione nemo veritatis itaque, quia esse in recusandae qui pariatur tenetur non optio odio quis fugiat minima.</p>
<p>Bye</p>
</div>
https://stackoverflow.com/questions/50632743
复制相似问题