주어진 HTML 요소에서 문자 오프셋을 어떻게 결정할 수 있습니까? 선택 항목이 HTML 태그에 걸쳐 있는 경우에도 범위(사용자 선택)가 시작하고 끝나는 상위 컨테이너 내에 있습니까?
업데이트된 응답:
시작 및 끝 오프셋을 모두 얻으려면:
function getSelectionCharacterOffsetWithin(element) { // Determine start and end offsets var start = 0; var end = 0; // Create ranges var range = getRangeAt(0); var preCaretRange = range.cloneRange(); // Set start offset preCaretRange.selectNodeContents(element); preCaretRange.setEnd(range.startContainer, range.startOffset); start = preCaretRange.toString().length; // Set end offset preCaretRange.setEnd(range.endContainer, range.endOffset); end = preCaretRange.toString().length; // Return the object return { start: start, end: end }; }
원래 응답:
제공된 코드는 getSelection() 및 getRangeAt(0)을 활용하여 선택 항목을 검색합니다. 그런 다음 범위의 toString() 메서드를 사용하여 요소 내 캐럿 위치의 오프셋을 계산합니다. 이 접근 방식은 끝 오프셋 또는 캐럿 위치만 제공합니다.
예:
function getRangeCharacterOffsetWithin(element) { var range, sel; if ((sel = window.getSelection())) { range = sel.getRangeAt(0); range.collapse(false); prevRange = range.cloneRange(); prevRange.selectNodeContents(element); prevRange.setEnd(range.endContainer, range.endOffset); return prevRange.toString().length; } return 0; }
위 내용은 상위 HTML 요소 내에서 사용자 선택의 시작 및 끝 문자 오프셋을 어떻게 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!