Диапазон Javascript.свернуть (false) позицию, иногда попадающую в следующий абзац

#javascript

#javascript

Вопрос:

Я изо всех сил пытаюсь понять, как справиться с проблемой двойного щелчка по абзацу, дающему один тип диапазона, и выбрать тот же абзац, дающий меньший диапазон.

Проблема в том, что если я дважды щелкну, то конечный контейнер будет выглядеть следующим абзацем, но при выборе вручную конечный контейнер остается тем же абзацем.

Чтобы продемонстрировать это, у меня есть jsfiddle — https://jsfiddle.net/Abeeee/uagt0z28/39 / который использует insertText для ввода текста в положение свертки диапазона;

 var range0 = range.cloneRange();

range.collapse(true);
document.execCommand('insertText', false, '!!!START!!!');

sel.removeAllRanges();
sel.addRange(range0);
range0.collapse(false);
document.execCommand('insertText', false, '!!!END!!!');
 

проблема обнаруживается, когда вы дважды щелкаете по слову в абзаце (который выделяет весь абзац), а затем нажимаете [setRangeText], чтобы увидеть, где, по мнению кода, находятся начальная и конечная точки этого выделения).
дважды щелкните, чтобы выбрать весь абзац

Я хочу, чтобы абзац был окружен НАЧАЛЬНЫМ и конечным маркерами слева и справа от первого и последнего слов, как показано здесь …

тест ручного выбора

… но то, что я получаю, это конечный маркер, расположенный рядом со следующим абзацем (и внутри тега < p> для этого пункта), как показано здесь …

Дважды щелкните тест

Как мне исправить / исправить это?

Комментарии:

1. Если я не ошибаюсь, JS использует конечный пробел при выделении текста

2. Например, трижды щелкните любой ваш текст и вставьте его в консоль… Мой добавил конечный пробел