私は、書き込み中に特別なオートコンプリートを提供する Etherpad-lite プラグインに取り組んでいます。ユーザーが書いたときにオートコンプリート項目のリストを更新しようとしています。私の問題は、aceEditEvent の context.rep.selStart と context.rep.selEnd のキャレット位置が、キーを押した後の最初の idleWorkTimer イベントでのみ更新されることです。これには、この目的のために大きな待ち時間があります。
aceEditEvent のイベントは次のように発生します。
- handleKeyEvent - すぐに来ます (キーダウンの場合だと思います)。content.rep はキーストロークの前に選択されます
- handleKeyEvent - すぐに来ます (キープレスの場合だと思います)。content.rep はキーストロークの前に選択を行います
- handleKeyEvent - すぐに来ます (キーアップの場合だと思います)。content.rep はキーストロークの前に選択を行います
- idleWorkTimer - 最大 1 秒のレイテンシがあり、content.rep はキーストローク後に選択を行います
では、待ち時間なしで新しいキャレット位置を取得するにはどうすればよいでしょうか?