О contenteditable = "true"
, я хочу сделать невозможным удаление .icon
в этом.(.Icon
всегда идет последним.)
Я пытаюсь следующий код.
<h2>
<span class="txt" contenteditable="true">World</span>
</h2>
<h2>
<span class="txt" contenteditable="true">Hello<span class="icon" contenteditable="false">★</span></span>
</h2>
<style>
h2 {
word-break: break-all;
}
span.txt {
border-bottom: 1px solid black;
cursor: text;
width: 100%;
height: 100%;
display: inline-block;
}
</style>
<script>
document.addEventListener ('click', event=> {
let selection = event.view.getSelection();
let target = event.target;
let doc = target.ownerDocument;
let icon = target.closest ('.icon');
if (icon) {
let e = icon.previousSibling;
if (e) {
let range = doc.createRange ();
let len = e.length;
range.setStart (e, len);
range.setEnd (e, len);
selection.removeAllRanges ();
selection.addRange (range);
}
}
}, false);
</script>
Пример: https://jsfiddle.net/46fjdaxz/
Приведенный выше код сделал это невозможнымдля удаления .icon
.
В «Области мира» каретка отображается при щелчке в любом месте, но каретка не отображается при нажатии за «Привет областью».
Как я могуполучить отображение каретки в разделе «Привет»?
Заранее благодарим за помощь.