getBoundingClientRect возвращает 0 для верхнего, левого, правого, нижнего в Safari

Итак, у меня есть спорный div, работающий на Facebook draft-js, Мне нужно было получить визуальное положение каретки внутри этого div, и я реализовал это (который работает в Firefox и Chrome):

const selection = window.getSelection && window.getSelection();
if (selection.rangeCount > 0) {
    const coordinates = selection.getRangeAt(0).getBoundingClientRect();
}

Я получаю правильные координаты в случае Chrome и Firefox. Однако в Firefox я получаю 0 для всех свойств позиции. Любое обходное / кросс-браузерное решение для этого?

1 ответ

Похоже, я исправил проблемы, используя следующий код:

let range = window.getSelection().getRangeAt(0);
range = range.cloneRange();
range.setStart(range.startContainer, 0);
range.getBoundingClientRect();

Вот скрипка.

Другие вопросы по тегам