我刚刚注意到影响选择的可编辑元素(设计模式)中的错误行为。
这是示例:
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>
每次在元素内单击鼠标时,此示例都会输出选择的起始偏移量。这通常可以正常工作,但不适用于以下情况:
- 选择文本范围(开始偏移打印正确)
- 在所选文本内单击(开始偏移打印不正确,打印先前选择的开始偏移)
- 再次单击同一位置(现在可以正确打印起始偏移量)
因此,每次在前一个选择中设置选择时,都无法正确检索位置。
该错误似乎发生在每个浏览器中(在 FF、IE、Chrome 中测试)。
有人知道如何解决这个问题吗?