Какая у вас версия браузера Edge? Я воспроизвожу вашу проблему, используя следующий код для Edge 42 и Edge 44 версии.
<p>This is sample content</p>
<p id="demo"></p>
<script>
document.getElementsByTagName('p')[0].onmouseup = function () {
var range = null;
var selection = window.getSelection();
if (selection && selection.rangeCount > 0) {
range = selection.getRangeAt(0);
}
var startOffset = range.startOffset;
var endOffset = range.endOffset;
document.getElementById("demo").innerHTML =
startOffset + "<br>" + endOffset;
}
</script>
В версии Edge 42, если я выберу «контент», endOffset будет 1.
в версии Edge 44, если я перетаскиваю, чтобы выбрать «содержимое», endOffset работает хорошо, но если
Я выбираю «контент», используя метод двойного щелчка, endOffset по-прежнему будет 1.
Итак, эта проблема связана с браузером Edge, и я отправил отзыв об этой проблеме в Edge Platform.
В качестве обходного пути, я предлагаю вам рассчитать endOffset в соответствии с startOffset и выбранным текстом. Попробуйте использовать следующий код:
<p>This is sample content</p>
<p id="demo"></p>
<script>
document.getElementsByTagName('p')[0].onmouseup = function () {
var range = null;
var selection = window.getSelection();
if (selection && selection.rangeCount > 0) {
range = selection.getRangeAt(0);
}
var startOffset = range.startOffset;
var endOffset = startOffset + selection.toString().length;
document.getElementById("demo").innerHTML =
startOffset + "<br>" + endOffset + "<br/>" + selection;
}
</script>
Снимок экрана, как показано ниже: