【Javascript】contenteditableなdivでカーソル位置が指定できなかった原因
contenteditableなdivに「今日はいい天気だ」というテキストが存在して「は」の後ろ(前から3文字目)にカーソルを置きたかった。以下のようなコードで実験したけどなぜかカーソルが先頭にきてしまった。
<div id="editor" contenteditable="true">
今日はいい天気だ
</div>
<script>
window.onload = function() {
var editor = document.getElementById('editor')
var selection = window.getSelection()
var range = document.createRange()
range.setStart(editor.firstChild, 3)
range.collapse(true)
selection.removeAllRanges()
selection.addRange(range)
editor.focus()
}
</script>原因は改行コードとスペースが含まれていたからそこも含めた位置だったというオチだった。。
<div id="editor" contenteditable="true">今日はいい天気だ</div>
ちなみにブラウザからスペースを挿入すると「 」が挿入されるので表示もスペースで表示される。以上です