:Javascript에서 전체 div의 범위 오프셋을 얻으려면 어떻게해야합니까?
내 텍스트를 선택 할 때마다let before = text.substring(0, range[0]);
let highlighted = text.substring(range[0], range[1]);
let after = text.substring(range[1], text.length);
return(
<div>
{before}
<span style={{
backgroundColor: 'yellow'
}}>
{highlighted}
</span>
{after}
</div>
)
는, 범위는 다음과 같습니다
var selection = window.getSelection();
var beginsAt = selection.getRangeAt(0).startOffset;
var endsAt = selection.getRangeAt(0).endOffset;
return [beginsAt,endsAt];
이 함수를 호출하는 구성 요소는 다음과 같은 작업을 수행을 항상 강조 표시된 범위가 끝나는 위치를 기준으로합니다. 따라서 내 텍스트가 0에서 50 사이의 범위에 있고 범위 [25,26]을 선택한 다음 [26,27] 범위를 선택하면 [26,27] 범위를 강조 표시하지 않고 [0, 1] 범위가 {after}에 의해 생성 된 텍스트와 비교하여 [0,1] 이었기 때문입니다.
{before}에 의해 렌더링 된 텍스트를 강조하는 한, 문제가 없으며 {after} 섹션에서 렌더링 된 것을 강조 표시 할 때만 해당됩니다.
이 범위 값은 렌더링되는 블록에 상대적인 것이 아니라 전체 텍스트의 루트에 상대적으로 어떻게 만들 수 있습니까? 이것이 반응 또는 구현의 한계입니까?
이 구현은 가장 확실하게 작동하지만 내 문제에 더 적합한 특정 솔루션을 찾았습니다. 귀하의 의견을 보내 주셔서 감사합니다! – FactorialTime