Для контента, пригодного для контента, чтобы исправить ряд проблем, связанных с FireFox. Мне пришлось добавить тег br в конец div.установка позиции курсора/курсора в конец содержимого, разрешенного для контента.
<div id="testDiv" contentEditable="true">
Hey, click the button then hit space.<br>
</div>
Это на самом деле то, как google plus обрабатывает их contentEditable логику div с их пометкой пользователя.
Проблема в том, что перемещение курсора в конец div в firefox означает, что каретка после тега
и пробел пробега перемещается на следующую строку.
Вы можете проверить это поведение здесь: jsFiddle, нажав кнопку, нажав клавишу пробела.
Я использую следующий код, чтобы переместить курсор в последнюю позицию диапазона:
function placeCaretAtEnd(el) {
el.focus();
if (window.getSelection){
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(false);
textRange.select();
}
}
}
Будет ли возможность изменить этот код, чтобы игнорировать бр тег или переместить позицию курсора вместо непосредственно перед тегом br?
Так в чем проблема? Если я запустил этот скрипт в Firefox и Chrome без тега '
', я получаю ту же функциональность, однако я замечаю разницу при использовании тега br. –
Я могу обновить скрипку, но тег
очень необходим при работе с нередактируемыми элементами html в контентных элементах. Например, если бы у меня был вход в редактируемый, он не удалял бы последовательно использование backspace, и я бы не смог сфокусироваться в конце после элемента. – mstef