前提・実現したいこと
JavaScriptで簡易的なエディタを作っています。
文字列が一定の幅を超えたときにハイライトする処理を実装しているのですが、
ハイライト範囲を指定するために文字列の最後の位置情報を取得したいのですが、取得できずに困っています。
取得したいHTMLは下記のパターンで contenteditable="true"
を指定しています。
下記の例で、いずれも最後の「ト」の位置を取りたいです。(x,y,width,height)
HTMLパターン1
html
1<div id="sample" class="sample1" contenteditable="true"> 2テキストテキストテキストテキストテキストテキストテキスト ← 最後の「ト」の位置を取りたい 3</div>
HTMLパターン2
html
1<div id="sample" class="sample1" contenteditable="true"> 2テキストテキストテキストテキストテキストテキストテキスト 3<br> 4テキストテキストテキストテキストテキストテキストテキスト ← 最後の「ト」の位置を取りたい 5</div>
試したこと
現在の方法としてテキストの最後に <span class="last__position"></span>
を追加して、
last__positionの情報をgetBoundingClientRect()で取得しています。
html
1<div id="sample" class="sample1" contenteditable="true"> 2テキストテキストテキストテキストテキストテキストテキスト 3<br> 4テキストテキストテキストテキストテキストテキストテキスト<span class="last__position"></span> ← 最後にspanを追加 5</div>
ただ、こちらの方法だと常に最後にspanタグを入れる処理が必要になったり、
その他不都合が色々とでてきてしまったため、このようなことをしなくても最後の文字の位置情報を取得する方法を知りたいです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/12 07:41 編集