나는 이것이 1 년 된 것을 알고 있지만,이 게시물은 캐럿 위치를 찾는 것에 대한 많은 질문에 대한 상위 검색 결과이며 이것이 유용하다는 것을 알았습니다.
콘텐츠 편집 가능한 div에서 요소를 한 위치에서 다른 위치로 끌어 놓은 후 위의 Tim의 훌륭한 스크립트를 사용하여 새 커서 위치를 찾으려고했습니다. FF 및 IE에서 완벽하게 작동했지만 Chrome에서는 드래그 동작이 드래그 시작과 끝 사이의 모든 콘텐츠를 강조 표시하여 반환 된 결과 caretOffset
가 너무 크거나 작습니다 (선택 영역의 길이 기준).
첫 번째 if 문에 몇 줄을 추가하여 텍스트가 선택되었는지 확인하고 그에 따라 결과를 조정했습니다. 새로운 진술은 아래와 같습니다. OP가하려는 것이 아니기 때문에 여기에 추가하는 것이 부적절하다면 저를 용서하십시오.하지만 제가 말했듯이 Caret 위치와 관련된 정보에 대한 여러 검색이 저를이 게시물로 이끌었으므로 다른 사람을 도울 것입니다. .
줄이 추가 된 Tim의 첫 번째 if 문 (*) :
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var selected = range.toString().length;
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
if(selected){
caretOffset = preCaretRange.toString().length - selected;
} else {
caretOffset = preCaretRange.toString().length;
}
}