尽管没有错误,而且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>
发布于 2018-06-01 06:09:04
虽然Edge & IE11不会直观地显示它,但范围仍处于选中状态。您可以通过在函数回调中添加range.deleteContents();
作为最后一行来查看。
然而,,这意味着任何编辑行为,如富文本编辑以更改样式将只使用视觉上选择/突出显示的内容,即使实际范围不同!:/
https://stackoverflow.com/questions/50632743
复制相似问题