Я с contenteditable <p>
элемента, который содержит текст, внутри этого элемента <p>
есть один встроенный элемент, который является <span>
contenteditable не позволит мне писать по индексу 0 в <span>
Записи с индексом 0 в contenteditable строкового элемента
Я сделал скрипку для демонстрации проблемы: JsFiddle
Теперь откройте консоль браузеров, а затем попытаться напечатать что-нибудь с индексом 0 в инлайн <span>
. Поскольку вы можете видеть, что ввод текста не будет помещен в индекс 0, а вместо этого в последний индекс первого текстового узла.
Я пытался изменить это поведение с помощью rangy.js
.
Идея состояла в том, чтобы проверить, помещен ли каррель, который был помещен последним индексом в первом текстовом узле, а затем нажата стрелка вправо, я поместил бы carret на индекс 0 во втором узле. Но проблема продолжалась.
//rangy try without the if-statement.
var nodes = $el[1].childNodes, index = 0;
var range = rangy.createRange();
//Setting the start at node 2 index 0.
range.setStart(nodes[1], index);
range.collapse(true);
var sel = rangy.getSelection();
sel.setSingleRange(range);
Спасибо. Хорошо, я понимаю проблему. Вопрос в том, есть ли способ обхода браузера по умолчанию. –
@JonathanAndersson: Нет, потому что нет возможности рассказать о намерениях пользователя, действительно ли они хотели вставить символ в начале тега или в конец предыдущего текстового узла. – Abhitalks