이미지가 포함 된의 contentEditable 사업부의 캐럿 위치를 가져 오는 방법을 나는이 contentedittable DIV 여기</p> <pre><code><div contenteditable="true" id="text">minubyv<img src="images/smiley/Emoji Smiley-01.png" class="emojiText" />iubyvt</div> </code></pre> <p>이
그래서 난 캐럿을 얻기 위해 원하는 코드 출력의 이미지에 대한 설명입니다 div의 위치이며 커서가 마지막 문자 뒤에 있다고 가정합니다. 그리고 이것은 캐럿 위치
function getCaretPosition(editableDiv) {
var caretPos = 0,
sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPos = range.endOffset;
}
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
if (range.parentElement() == editableDiv) {
var tempEl = document.createElement("span");
editableDiv.insertBefore(tempEl, editableDiv.firstChild);
var tempRange = range.duplicate();
tempRange.moveToElementText(tempEl);
tempRange.setEndPoint("EndToEnd", range);
caretPos = tempRange.text.length;
}
}
return caretPos;
}
var update = function() {
console.log(getCaretPosition(this));
};
$('#text').on("mousedown mouseup keydown keyup", update);
를 받고 내 코드입니다 그러나 문제는 6
대신 14
반환합니다. 캐럿 위치는 이미지 다음에 0
으로 되돌아갑니다. 이 경우에는 캐럿 위치를 14
으로 가져올 수있는 방법이 있습니까?
편집 나는 또한 caret 위치에서 시작하여 몇 가지 요소를 삽입 할
. 그래서 이것은
selectStart = 0;
var update = function() {
selectStart = getCaretPosition(this);
};
function insertEmoji(svg){
input = $('div#text').html();
beforeCursor = input.substring(0, selectStart);
afterCursor = input.substring(selectStart, input.length);
emoji = '<img src="images/smiley/'+svg+'.png" class="emojiText" />';
$('div#text').html(beforeCursor+emoji+afterCursor);
}
귀하의 코드는 시원하지만 난 모든 것을 감지 할 필요가 HTML div의 내용이 텍스트를 제공하지 않습니다. 왜냐하면 내가 caret 위치의 div에 일부 문자를 삽입하기 때문입니다. 내 질문을 봐 편집하십시오. –
@doggiebrezy 당신이 원하는대로 작동 시켰습니다. 내 업데이트 답변을 참조하십시오. 최신 Chrome 및 Firefox에서 테스트했습니다. 그것은 비록 IE에서 작동하지 않습니다. –
편집 해 주셔서 감사합니다.하지만 마지막으로 한 가지만 도와주세요. 이제 저는 캐럿 위치에 텍스트 나 이미지를 삽입하려고합니다. 따라서 div.html을 분할했는데 문제는 캐럿 위치가 11이라고 가정하면 삽입 된 텍스트가 그 이미지를 하나의 전체 이미지로 계산하지 않습니다.html 거기에 삽입 할 수있는 지점을 잘못 배치하여, 제발 내가 얼마나 많은 문자열을 div.html img 요소를 포함하여 계산할 수 있습니다 –