range.setStartBefore和range.setEndAfter在Edge和IE11中无法工作应该怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (157)

Edge和IE11都支持range.setStartBeforerange.setEndAfter,但没有任何反应。

适用于Chrome,Firefox和Opera。

要进行交互,请在lorem ipsum文本中选择一对字符或单词。Chrome浏览器,Firefox和Opera会选择其他应用程序的文本。Edge和IE11什么都不做。

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>
提问于
用户回答回答于

Edge&IE11不直观地显示它,但range仍被选中。可以通过range.deleteContents();在函数回调中添加最后一行来看到。

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问9 回答
  • 富有想象力的人

    3 粉丝0 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答

扫码关注云+社区

领取腾讯云代金券