0

私は、書き込み中に特別なオートコンプリートを提供する Etherpad-lite プラグインに取り組んでいます。ユーザーが書いたときにオートコンプリート項目のリストを更新しようとしています。私の問題は、aceEditEvent の context.rep.selStart と context.rep.selEnd のキャレット位置が、キーを押した後の最初の idleWorkTimer イベントでのみ更新されることです。これには、この目的のために大きな待ち時間があります。

aceEditEvent のイベントは次のように発生します。

  1. handleKeyEvent - すぐに来ます (キーダウンの場合だと思います)。content.rep はキーストロークの前に選択されます
  2. handleKeyEvent - すぐに来ます (キープレスの場合だと思います)。content.rep はキーストロークの前に選択を行います
  3. handleKeyEvent - すぐに来ます (キーアップの場合だと思います)。content.rep はキーストロークの前に選択を行います
  4. idleWorkTimer - 最大 1 秒のレイテンシがあり、content.rep はキーストローク後に選択を行います

では、待ち時間なしで新しいキャレット位置を取得するにはどうすればよいでしょうか?

4

1 に答える 1

0

答えはこちら: https://github.com/ether/etherpad-lite/issues/2015

基本的に、この問題はまだ解決されていません。回避策として、イベントの後に setTimeout を使用して、正しいキャレット位置を設定することができます。

于 2015-06-22T10:22:33.267 に答える