检索 ContentEditable 元素中的插入符位置
与在 contentEditable 元素中设置插入符位置的大量解决方案相比,确定其事实证明,目前的地位对于许多开发商来说是难以捉摸的。这个问题解决了这一特定的知识差距。
要在用户输入(例如按键)时确定给定 contentEditable 元素内的插入符位置,可以使用以下代码:
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; }
此代码在以下假设下运行:
有关使用嵌套元素容纳更复杂内容的更全面的解决方案,请参阅以下 Stack Overflow 答案:https://stackoverflow.com/a/4812022/96100
以上是如何获取 ContentEditable 元素中的插入符位置?的详细内容。更多信息请关注PHP中文网其他相关文章!