Welcome
自分の興味あるテーマを中心に、図解多めに記事を作成していきたいと思います。
自分の興味あるテーマを中心に、図解多めに記事を作成していきたいと思います。
contenteditableをtrueに設定すると、ユーザーによる要素の変更が可能となります。
function setEndOfContenteditable(contentEditableElement) {
var range, selection;
range = document.createRange();
range.selectNodeContents(contentEditableElement);
range.collapse(false); // false->始点が終点の位置に移動
selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range); // 可視化される
}
javascript - How to move cursor to end of contenteditable entity - Stack Overflow
contenteditableを動的にtrueにした場合、一旦要素のフォーカスが外れてからでないと編集可能状態にならなかったので対策を考えてみました。
el.addEventListener("click", (ev) => {
let _el = ev.target
_el.setAttribute("contenteditable",true)
_el.blur()
_el.focus()
})
trueにした後、blur()であえてフォーカスを外し、再度focusを当てています。
<div class="editor" contenteditable="true">123456789
</div>
このようなhtmlが書かれた場合、このelementのinnerHTMLは"123456789\n\t"となります。innerTextは"123456789"ですが、textContentは"123456789\n\t"であり、わかりづらい。テキストのlengthの値が狂ってきますし。
さらに以下のように余分なスペースが入ってしまいます。

こうした減少はシンタックスハイライターなどでも起こり、以下のようにtabや改行を入れなければ回避できますが・・。
<div class="editor" contenteditable="true">123456789</div>