首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >range.setStartBefore和range.setEndAfter在边缘中不起作用,IE11在contenteditable中不起作用

range.setStartBefore和range.setEndAfter在边缘中不起作用,IE11在contenteditable中不起作用
EN

Stack Overflow用户
提问于 2018-06-01 05:02:25
回答 1查看 59关注 0票数 0

尽管没有错误,而且Edge和IE11都支持range.setStartBeforerange.setEndAfter,但什么也不会发生。我已经检查了每个属性,一切看起来都很正常,但是突出显示/选择整个范围并没有发生。

这在Chrome、Firefox和Opera中都能正常工作。

要进行交互,请在lorem ipsum文本中间选择几个字符或单词。Chrome、Firefox和Opera将按照预期选择lorem ipsum文本的其余部分。Edge和IE11什么也不做。

演示:https://codepen.io/anon/pen/OEVzoe

代码语言:javascript
复制
document.querySelector('div').addEventListener('mouseup', function() {
  var range = window.getSelection().getRangeAt(0);
  range.setStartBefore(range.startContainer.parentNode);
  range.setEndAfter(range.endContainer.parentNode);
});
代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 06:09:04

虽然Edge & IE11不会直观地显示它,但范围仍处于选中状态。您可以通过在函数回调中添加range.deleteContents();作为最后一行来查看。

然而,,这意味着任何编辑行为,如富文本编辑以更改样式将只使用视觉上选择/突出显示的内容,即使实际范围不同!:/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50632743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档