ページ: 1
アイテムの追加や編集画面にある[太字]、[斜体]、[リンク作成]等のアイコンボタンのバーを用いて何らかの操作をすると、カーソルがテーブルの先頭に戻ってしまい、作業に水を差されるのがとても不満でした。
今回、操作対象のフォーム要素からフォーカスが失われないようにしたいと思い、ソースを当たってみました。
すると、/nucleus/javascript/edit.jsというファイルがこの部分の処理を受け持っているようでしたので、これをちょっとだけいじってみました。
変更する個所は次の2つのファンクションです。
function insertAtCaret (text)
function insertAroundCaret (textpre, textpost)
これらのファンクションの末尾に、以下の1行を書き入れて、ファイルを保存するといいかなと思います。
lastSelected.focus();
編集者 nshown (2018-02-16 12:15:39)
オフライン
その変更だけですと最新のブラウザでは
最終行にカーソルが行くだけであまり意味がないですので
選択部分にカーソルを持っていくほうが使いやすくなります。
・function insertAtCaret (text)
先頭
var textEl = lastSelected;
var new_positon = -1;
if (textEl && (typeof textEl.selectionEnd == 'number')) {
new_positon = textEl.selectionEnd + text.length;
}
後方
updAllPreviews();
if (lastSelected) {
if (typeof lastSelected.focus == 'function') {
lastSelected.focus();
}
if (typeof lastSelected.selectionEnd == 'number') {
lastSelected.selectionStart = new_positon;
lastSelected.selectionEnd = new_positon;
}
}
・function insertAroundCaret (textpre, textpost)
先頭
var textEl = lastSelected;
var start_positon = -1;
var end_positon = -1;
if (textEl && (typeof textEl.selectionEnd == 'number')) {
if (textEl.selectionStart == textEl.selectionEnd) {
end_positon = textEl.selectionEnd + textpre.length;
start_positon = end_positon;
} else {
start_positon = textEl.selectionStart;
end_positon = textEl.selectionEnd + textpre.length + textpost.length;
}
}
後方
updAllPreviews();
if (lastSelected) {
if (typeof lastSelected.focus == 'function') {
lastSelected.focus();
}
if (typeof lastSelected.selectionEnd == 'number') {
lastSelected.selectionStart = start_positon;
lastSelected.selectionEnd = end_positon;
}
}
オフライン
早速ご提案の件、edit.jsに組み込んでみました。
素晴らしいですね。編集作業が非常にスムーズにできるようになります。
記事追加時の文章を順次入力しているケースでは、カーソルが最終行の行末にあることを不自由に感じていなかったので、気づいていませんでした。
次期バージョンではこの件を反映して頂けたら嬉しいです。
オフライン
もともとはフォーカスを失わない仕様でしたが、edit.jsの設計が古いために最新のブラウザに対応できてないみたいですね。かなり遅れてますが、次のリリースに取り込みたいと思います。
オフライン
ページ: 1