我有一个 contentEditable DIV,当用户按下一个键时,底层代码被处理并被更新的代码替换。唉,这会导致光标位置丢失。
但是,为了保留光标位置,我<span id="placeholder"></span>
在处理开始之前成功地将 a 插入到 DIV 的正确位置。这保留了光标的预期位置,但现在我似乎无法设置范围来选择它。
这是我目前拥有的:
function focusOnPlaceholder() {
var placeholder = document.getElementById('placeholder');
if( !placeholder ) return;
var sel, range;
if (window.getSelection && document.createRange) {
range = document.createRange();
range.selectNodeContents(placeholder);
range.collapse(true);
sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(placeholder);
range.select();
}
}
任何帮助将不胜感激,跨浏览器解决方案将令人难以置信:)