由于回答了documentation,所以在内容可编辑的div中用简单的文本获得插入符的位置here,但我要查找的内容有些不同:
我的contentEditable div包含一个文本以及img
标签,以在文本内显示自定义表情符号,并且以下解决方案总是在有img
标签的情况下重新初始化插入符号:
function getCaretPosition(editableDiv) {
var caretPos = -1, sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == editableDiv) {
caretPos = range.endOffset;
}
}
}
return caretPos;
}
var update = function() {
$('#caretposition').html(getCaretPosition(this));
};
$('#contentbox').on("mousedown mouseup", update);
#contentbox > img {
width: 18px;
height: 18px;
margin-bottom: -4px;
}
#caretposition {
font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="contentbox" contenteditable="true">
Click me to display caret position
<img src="https://upload.wikimedia.org/wikipedia/commons/a/a4/Emojione_1F60A.svg" />
Click me to display caret position after the image
</div>
<div id="caretposition">-1</div>
如您所见,运行此代码:
在计算插入符号位置时,是否有可能将表情符号视为文本中的简单字符?