getBoundingClientRect在Safari中返回顶部,左侧,右侧,底部的0

时间:2016-11-24 09:27:05

标签: javascript html safari contenteditable draftjs

所以,我有一个由Facebook draft-js提供支持的可信任的div。我需要在div中获得插入符号的视觉位置,并且我实现了它(在Firefox和Chrome中有效):

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

我在Chrome和Firefox的情况下获得了正确的坐标。但是,在Firefox中,我获得了所有位置属性的0。任何解决方法/跨浏览器解决方案?

1 个答案:

答案 0 :(得分:2)

似乎我已经使用下一个代码解决了问题:

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

这是fiddle