下記のように、contentEditableの要素に対して、
html
1<div id="editor" contentEditable="true"></div>
フォーカスが当たった瞬間に
javascript
1document.getSelection();
を用いて値を取得したいです。
試したこととして、フォーカスに当たった瞬間に下記のように実行して見ましたが、
javascript
1$(function() { 2 $("#editor").focus(function(){ 3 document.getSelection(); 4 var range = sel.getRangeAt(0).cloneRange(); 5 }); 6}); 7
フォーカスが当たった瞬間だとおそらくまだ実際に当たってはいない判定なのか、getSelectionで値が取れずにgetRangeAtをしようとした際にエラーとなってしまっています。
例えばページを開いた際とかに処理を仕込んで、下記のようにフォーカスを当てる処理を行なった後にgetSelectionを行うとうまくいきました。
javascript
1 $("#editor").focus(); 2 var sel = document.getSelection(); 3 var range = sel.getRangeAt(0).cloneRange(); 4 const text = document.createTextNode("a"); 5 6 range.insertNode(text); 7 sel.removeAllRanges(); 8 sel.addRange(range); 9
ただ今回はどうしてもフォーカスを当てた時にgetSelection等の処理を行いたいです。
調べてもフォーカスが当たった瞬間に始動するjsは出てくるのですが、フォーカスが当たった後に始動する関数等はありますでしょうか。もしくは当たった瞬間でも、getSelectionによって値取得ができる方法ありましたら、ご教授いただければと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/15 04:54