前提
ブラウザベースでのWYSIWYGエディタをJavaScript で開発中です。
実現したいこと
コピペ時のスタイル情報を削除するため、以下の操作でペーストできる機能を開発しています。
- contenteditableのエディタ領域(id="text_editable")上でペーストして置き換えたい文字列を選択
- ペースト実施
- 文字列が置き換えられ、選択した文字列の開始位置にカーソルが移動
発生している問題・エラーメッセージ
ペースト実施後にカーソルがエディタ部の先頭に移動してしまいます。
対処法がもしお分かりになればご教授いただきたいです。
該当のソースコード
Javascript
1function paste(){ 2 let paste = (event.clipboardData || window.clipboardData).getData('text'); 3 event.preventDefault(); 4 5 var sel = window.getSelection(); 6 var range = sel.getRangeAt(0); 7 var newNode = document.createTextNode(paste); 8 range.deleteContents(); 9 range.insertNode(newNode); 10 11 var area = document.getElementById('text_editable'); 12 if(sel.anchorOffset<sel.focusOffset){ 13 range.setStart(area, sel.anchorOffset); 14 }else{ 15 range.setStart(area, sel.focusOffset); 16 } 17 var new_area=area.innerHTML; 18 new_area=new_area.replace(/ /g," "); 19 new_area=new_area.replace(/\\n/g,"<br>"); 20 text_editable.innerHTML = new_area; 21 sel.removeAllRanges(); 22 } 23}
試したこと
最初はカーソルが表示されていなかったので、以下を参考にsetStartの行を追加したのですが、「選択した文字列の開始位置」に移動してくれません。
https://proglearn.com/2021/02/12/contenteditable%E3%81%AA%E8%A6%81%E7%B4%A0%E3%81%A7%E3%82%AD%E3%83%A3%E3%83%AC%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E3%82%92%E6%96%87%E6%9C%AB%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%95/
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/21 06:49