「枠」ボタンを追加した。選択されたテキストを囲んでボタンを押すとタグを挿入し、四角い枠内にテキストを表示するようにレイアウトする。
「コード」ボタンを追加した。選択されたテキストを囲んでボタンを押すとタグを挿入し、 prism を使ったソースコード表示(行番号表示設定)をするようにレイアウトする。
また、先日、追記用の入力欄も追加したので、「 URL 」「強調」「斜体」「下線」「取消」「引用」「上付」「下付」「枠」「コード」の各ボタンが、本文入力欄、追記入力欄のどちらかフォーカスのある方に作用するようにした。
今まで、枠をつけたりソースコード表示をしたりするたびに、手作業でタグを書き込んでいたので、大分楽になった。
今回の修正で少し考える必要があったのは、ボタンが押されたときに選択されている文字列を把握するために、 textarea 要素に対して onSelect でテキストが選択されるたびにイベントを起こしていたのだが、逆にテキストの選択が解除されたときに起きるイベントが javascript のイベントに存在しなかったため、どのように実現するかという点だった。
結局、 textarea 要素に対して onkeyup と onmouseup を補足し、そのイベントハンドラ内で getSelection(e) で選択文字列を取得し選択中の文字列として保存することで、選択の解除を補足することができた。( onkeydown, onmousedown ではタイミングが早すぎて、まだ選択中の文字列が取得される。)
この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/dev/20190828_212432537675.htm
キーワード: rNote rnotepad.php javascript