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

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

DDD
풀어 주다: 2024-12-10 03:46:09
원래의
517명이 탐색했습니다.

How Can I Accurately Set the Caret Position in a ContentEditable Div?

contenteditable 요소에서 캐럿 위치 설정

contenteditable div 요소 내의 정확한 위치에 캐럿을 설정하는 것은 어려운 작업일 수 있습니다. . 온라인 커뮤니티에서 도움을 구하다가 아래와 유사한 JavaScript 솔루션을 접했을 수도 있습니다.

const range = document.createRange();
const myDiv = document.getElementById("editable");
range.setStart(myDiv, 5);
range.setEnd(myDiv, 5);
로그인 후 복사

그러나 웹의 지식 저장소에 존재함에도 불구하고 이 접근 방식은 Firefox와 Chrome 모두에서 효과적이지 않은 것으로 입증되었습니다. .

범위 및 선택 개체 수용

상황에서는 Range 및 Selection 개체의 잠재력을 활용하는 것이 중요합니다. 이러한 객체는 캐럿 배치를 정밀하게 제어하는 ​​문지기 역할을 합니다.

애플리케이션을 설명하기 위해 캐럿을 텍스트 두 번째 줄의 다섯 번째 문자로 이동해 보겠습니다. 이를 달성하는 방법은 다음과 같습니다.

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)
}
로그인 후 복사

HTML 구현

이 솔루션을 완전히 통합하려면 코드 내에 다음 HTML을 통합하세요.

<div>
로그인 후 복사

이 구현을 통해 버튼을 클릭하면 편집 가능한 div 내에서 캐럿의 위치가 적절하게 지정되어 해당 div를 세밀하게 제어할 수 있습니다. 배치합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿