1

我刚刚注意到影响选择的可编辑元素(设计模式)中的错误行为。

这是示例:

document.addEventListener('mouseup', function(e) {
  // get selection
  var selection = window.getSelection();
  if (selection.rangeCount === 1) {
    var range = selection.getRangeAt(0);
    console.log(range.startOffset);
  }
}, false);
#el {
  border:1px solid black;
  padding:5px;
  height:200px;
  margin-bottom:10px;
  overflow:auto;
}
<div id="el" contenteditable="true">
  Select whole Text<br/>
  Then click within selection
</div>

每次在元素内单击鼠标时,此示例都会输出选择的起始偏移量。这通常可以正常工作,但不适用于以下情况:

  1. 选择文本范围(开始偏移打印正确)
  2. 在所选文本内单击(开始偏移打印不正确,打印先前选择的开始偏移)
  3. 再次单击同一位置(现在可以正确打印起始偏移量)

因此,每次在前一个选择中设置选择时,都无法正确检索位置。

该错误似乎发生在每个浏览器中(在 FF、IE、Chrome 中测试)。

有人知道如何解决这个问题吗?

4

0 回答 0