varcursor = 0;
document.onselectionchange = 함수 () {
var 범위 = document.selection.createRange();
var srcele = range.parentElement(); //현재 요소 가져오기
var copy = document.body.createTextRange();
copy.moveToElementText(srcele);
for (cursor = 0; copy.compareEndPoints("StartToStart", range) < 0; 커서 ) {
copy.moveStart("character", 1); //커서 위치를 변경합니다. 실제로 커서 수를 기록하고 있습니다.
}
}
커서 변경 이벤트를 문서에 바인딩합니다. 커서 위치를 기록하는데 사용됩니다.
이런 방법으로 DIV의 커서 위치를 알 수 있습니다.
lyTXT1.focus();
var r = document.selection.createRange();
//여기서 이동은 현재 커서부터 시작하기 때문에(텍스트 상자는 0부터 시작하는 것 같습니다.) 현재 커서 위치를 가져온 다음 이동할 위치 수를 계산하여 이동할 수 있습니다. 원하는 위치에 커서
r.moveStart('character', lyTXT1.innerText.length - 커서);
r.collapse(true);
r.select();
}
함수 insertHtmlAtCaret(html) {
var sel, 범위;
if (window.getSelection) {
// IE9 및 비 IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
범위 = sel.getRangeAt(0);
range.deleteContents();
// Range.createContextualFragment()는 여기서 유용하지만
// 비표준이며 모든 브라우저에서 지원되지 않습니다(예: IE9)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ( (노드 = el.firstChild) ) {
lastNode = frag.appendChild(노드);
}
range.insertNode(frag);
// 선택 항목 유지
if (마지막 노드) {
범위 = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(범위);
}
}
} else if (document.selection && document.selection.type != "컨트롤") {
//IE<9
document.selection.createRange().pasteHTML(html);
}
}