узнать направление выделения текста

Рейтинг: 4Ответов: 1Опубликовано: 15.03.2023

есть текст в несколько строк текста:

<div>
    <p>длинный длинный, очень длинный текст</p>
    <p>длинный длинный, очень длинный текст</p>
    <p>длинный длинный, очень длинный текст</p>
</div>

при событии selectionchange нужно каким то образом получать направление выделения текста: "вверх", "вниз" или "в той же строке". реально подобное реализовать?

Ответы

▲ 5Принят

Может вот так

const getDirection = function () {
    const selection = window.getSelection();
    const range = document.createRange();
    range.setStart(selection.anchorNode, selection.anchorOffset);
    range.setEnd(selection.focusNode, selection.focusOffset);

    return range.collapsed ? 'backward' : 'forward';
};

document.addEventListener("selectionchange", () => {
  console.log(getDirection());
});
<div>
    <p>длинный длинный, очень длинный текст</p>
    <p>длинный длинный, очень длинный текст</p>
    <p>длинный длинный, очень длинный текст</p>
</div>