处理 contentEditable
<div> 时,默认浏览器功能会将光标位置重置为文本的开头恢复焦点后。要解决此问题,请考虑以下解决方案:存储和恢复光标位置:
此方法确保光标位于最后一个已知位置当 div 重新获得焦点时。
处理点击:
要在单击 div 时恢复选择,需要执行以下附加步骤:
工作代码:
<div>
var savedRange, isInFocus; function saveSelection() { savedRange = window.getSelection ? window.getSelection().getRangeAt(0) : document.selection.createRange(); } function restoreSelection() { isInFocus = true; document.getElementById("area").focus(); if (savedRange) { if (window.getSelection) { var s = window.getSelection(); s.removeAllRanges(); s.addRange(savedRange); } else if (document.createRange) { window.getSelection().addRange(savedRange); } else if (document.selection) { savedRange.select(); } } } function onDivBlur() { isInFocus = false; } function cancelEvent(e) { if (isInFocus === false && savedRange) { if (e && e.preventDefault) { e.stopPropagation(); e.preventDefault(); } else { window.event.cancelBubble = true; } restoreSelection(); return false; } }
以上是如何在 ContentEditable Div 中设置和维护光标位置?的详细内容。更多信息请关注PHP中文网其他相关文章!