0

削除/バックスペースボタンのキーダウンイベントをキャッチする必要があります。問題は、キャレットがタグ/ブロックの最初または最後にある場合です。この瞬間に、前/次のブロック/タグの文字をキャッチする必要があります。

しかし、最初に、範囲を前のブロックの最後の文字に移動する方法がわかりませんか?私はすでにそれを使用して移動しようとしました:

var element = range.getPreviousNode(); // This returns a Text-Node
range.moveToElementEditablePosition(element,true); // This gives a error

エラーは次のように述べています:TypeError:h is null ckeditor.js(line 364)しかし、これはフォーカスをテキストノードに移動できないためだと思いますか?

問題は、削除しようとしている手紙をどうやって捕まえることができるかということです。CKEDITORワークフローを中断することなく。これにより、ブロック/タグを切り替えるロジックを構築する必要がなくなります。

4

1 に答える 1

0

各イベントeditor.edtaible().getText()key保存し、いくつかの差分アルゴリズムを使用して前の値と比較します。これは気分がいいです:https ://code.google.com/p/google-diff-match-patch/

その理由は、場合によっては、バックスペース/削除によって複数の文字が削除されるためです。たとえば、キャレットがブロック要素の後にある場合(ブロック全体が削除される場合)や、多くのテキストが選択されている場合などです。その上、CKEditorのカレットポジショニングシステムは予測不可能であり(ブラウザはバグがあり予測不可能です)、あなたのやり方はあなたをトラブルに導く可能性があります。

于 2013-02-27T09:53:33.527 に答える