>웹 프론트엔드 >JS 튜토리얼 >Contenteditable Div에서 캐럿 위치를 어떻게 정확하게 제어할 수 있습니까?

Contenteditable Div에서 캐럿 위치를 어떻게 정확하게 제어할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-11 05:05:13356검색

How Can I Precisely Control Caret Position in a Contenteditable Div?

콘텐츠 편집 가능한 요소의 캐럿 위치 지정

콘텐츠 편집 가능한 div 내에서 캐럿 위치를 조작하기 위해 Range 및 성공 정도가 다양한 개체를 선택합니다. 그러나 최근의 노력을 통해 커서 위치를 설정하는 정확한 방법이 밝혀졌습니다.

캐럿을 특정 문자로 설정

Firefox 및 Chrome과 같은 브라우저에서는 원하는 결과를 얻을 수 있습니다. 다음 코드를 활용하면 됩니다.

function setCaret() {
    var el = document.getElementById("editable")
    var range = document.createRange()
    var sel = window.getSelection()
    
    range.setStart(el.childNodes[2], 5)
    range.collapse(true)
    
    sel.removeAllRanges()
    sel.addRange(range)
}

이 코드에서 커서는 두 번째 줄의 다섯 번째 문자에 위치합니다. ID가 "editable"인 contenteditable div의 텍스트입니다. 이는 범위의 시작점과 끝점 모두에 대해 대상 노드(el.childNodes[2])와 해당 노드 내의 오프셋 위치(5)를 지정하여 수행됩니다.

위치 구체화

정확도를 최대화하기 위해 추가 노드와 오프셋을 코드에 포함하여 커서 위치를 중첩 요소 내 또는 특정 문자 내에서 특정 문자로 좁힐 수 있습니다. 단어. 이 수준의 제어를 통해 복잡한 HTML 구조 내에서 커서를 원활하게 조작할 수 있습니다.

위 내용은 Contenteditable Div에서 캐럿 위치를 어떻게 정확하게 제어할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.