虽然没有错误,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>
答案 0 :(得分:0)
Edge&amp; IE11没有在视觉上显示它,范围仍在被选中。您可以通过添加range.deleteContents();
作为函数回调中的最后一行来看到。
然而,这意味着任何编辑行为(如富文本编辑)更改样式都只会使用视觉选择/突出显示的内容,即使实际范围不同! :/